maps.googleapis结果与maps.google.com不同

时间:2013-10-27 15:43:17

标签: google-maps google-maps-api-3

我对地图有一个非常讨厌的问题:当我在maps.google.com上搜索'rue du sapin,la marsa,tunisie'时,它会找到它并按预期工作。

现在我正在使用Api,我就这样配置了

private static final String MAPS_REQUEST_URL = "http://maps.googleapis.com/maps/api/geocode/json?sensor=false&language=FR&components=country:TN&address=";

当我使用'rue du sapin,la marsa,tunisie'请求此网址时,它会返回 Rue du Sapin,Carthago,Tunisie

我尝试使用区域,语言和国家/地区参数,但没有任何结果可行:它接缝谷歌正在将 la marsa 翻译为 cartahago (在其内部版本中:因为 la marsa 接近购物车,所以在地理位置上是正确的。

但突尼斯没有人会打电话给 La marsa carthago 这是没有意义的。

所以问题是:为什么网络客户端使用好的条款和Api不?


使用chrome developer进行检查,(在网络选项卡上),我有此请求已执行。我不知道如何将其翻译成其他api的网址

curl 'https://maps.google.com/maps/suggest?q=rue+du+sapin,+la+mars&cp=21&hl=en&gl=&v=2&clid=1&json=a&ll=34.768691,10.008545&spn=5.955003,16.907959&vpsrc=6&authuser=0&auth=526fd0392GzY4pXSd2dS4DPzdNUGxkJ-kLI&src=1,2&num=5&numps=2&callback=_xdc_._1fhndbld0j' -H ':host: maps.google.com' -H 'accept-encoding: gzip,deflate,sdch' -H 'accept-language: en-US,en;q=0.8,fr;q=0.6,cs;q=0.4,it;q=0.2,ar;q=0.2' -H 'user-agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36' -H ':path: /maps/suggest?q=rue+du+sapin,+la+mars&cp=21&hl=en&gl=&v=2&clid=1&json=a&ll=34.768691,10.008545&spn=5.955003,16.907959&vpsrc=6&authuser=0&auth=526fd0392GzY4pXSd2dS4DPzdNUGxkJ-kLI&src=1,2&num=5&numps=2&callback=_xdc_._1fhndbld0j' -H 'accept: */*' -H ':version: HTTP/1.1' -H 'referer: https://maps.google.com/' -H 'cookie: SS=(...)' -H ':scheme: https' -H 'x-chrome-variations: CIO2yQEIhrbJAQiltskBCKm2yQEIxLbJAQiehsoBCNeHygEIlorKAQ==' -H ':method: GET' --compressed

它接缝这个答案与我的问题有关(即使是从很远的地方) Google Map APIs : UK specific results


提前感谢您的每一个答案

2 个答案:

答案 0 :(得分:3)

http://maps.googleapis.com/maps/api/geocode/json?sensor=true&language=EN&address=rue%20du%20sapin,%20la%20marsa(注意传感器,语言和除地址之外的任何其他内容)生成的结果集包含所有数据,“La Marsa Soukra”。

一种解决方案是从您收到的组件中生成自己的 formatted_address

我希望你只有一个位置命名对的实例来解决这个问题... 是的,我不知道我在这里说的是什么^^

〜回复后的详细信息

{
   "results" : [
      {
         "address_components" : [
            {
               "long_name" : "Rue du Sapin",
               "short_name" : "Rue du Sapin",
               "types" : [ "route" ]
            },
            {
               "long_name" : "Carthago",
               "short_name" : "Carthago",
               "types" : [ "locality", "political" ]
            },
            {
               "long_name" : "La Marsa Soukra",
               "short_name" : "La Marsa Soukra",
               "types" : [ "administrative_area_level_2", "political" ]
            },
            {
               "long_name" : "Tunis",
               "short_name" : "Tunis",
               "types" : [ "administrative_area_level_1", "political" ]
            },
            {
               "long_name" : "Tunisia",
               "short_name" : "TN",
               "types" : [ "country", "political" ]
            }
         ],
         "formatted_address" : "Rue du Sapin, Carthago, Tunisia",
         "geometry" : {
            ...
         },
         "partial_match" : true,
         "types" : [ "route" ]
      }
   ],
   "status" : "OK"
}

我猜是

  

从maps.googleapis.com加载时,Maps API v3的当前实现不依赖于与Google交换Cookie。

以某种方式在这里踢......或者只是通过 administrative_area_level_2 对组件位置进行了明确的偏好...因为匹配只是部分有信心:0.51319576424371627?< / p>

maps.google.com/maps/suggest甚至不是任何人都应该使用的(API甚至没有正确记录,不推荐使用v2使用的是maps.google.com/maps/geo)并使用或多或少私有的一些数据谷歌有。

我在

中使用了 cp 参数

http://maps.google.com/maps/suggest?q=rue+du+sapin,+la+marsa&cp=21&hl=en

和20产生了非常有趣的结果。

答案 1 :(得分:1)

你可以用La Marsa替换Carthago。或者假装谷歌地图提供正确的地理编码。最有可能来自Google Maps api的地理编码是正确的,你是否过度思考?!为了提高准确性,您可以在地理编码中搜索不同的名称:Google Maps API: Geocode returns different co-ordinates then Google maps但很可能使用不同的数据库:Google Maps Web site and API : different results。还有姓名和地址:Google Map geocoder not as accurate as a Google maps。如何解析地理编码:how to parse a Google Maps geocoding result

相关问题