2012-11-28 54 views
0

如果我这样做: http://maps.googleapis.com/maps/api/geocode/json?address=kemayoran&sensor=false这是我想要的结果,如果不是,我希望这个工作时,访客输入kem而不是kemayoran。为什么边界在这个Google MAP API中不起作用?

{ 
    "results" : [ 
     { 
     "address_components" : [ 
      { 
       "long_name" : "Kemayoran", 
       "short_name" : "Kemayoran", 
       "types" : [ "sublocality", "political" ] 
      }, 
      { 
       "long_name" : "Jakarta Pusat", 
       "short_name" : "Jakarta Pusat", 
       "types" : [ "sublocality", "political" ] 
      }, 
      { 
       "long_name" : "Jakarta", 
       "short_name" : "Jakarta", 
       "types" : [ "locality", "political" ] 
      }, 
      { 
       "long_name" : "Jakarta Capital Region", 
       "short_name" : "Jakarta Capital Region", 
       "types" : [ "administrative_area_level_1", "political" ] 
      }, 
      { 
       "long_name" : "Indonesia", 
       "short_name" : "ID", 
       "types" : [ "country", "political" ] 
      } 
     ], 
     "formatted_address" : "Kemayoran, Jakarta, Indonesia", 
     "geometry" : { 
      "bounds" : { 
       "northeast" : { 
        "lat" : -6.14935190, 
        "lng" : 106.8857620 
       }, 
       "southwest" : { 
        "lat" : -6.171493900000001, 
        "lng" : 106.84546290 
       } 
      }, 
      "location" : { 
       "lat" : -6.16165420, 
       "lng" : 106.8550150 
      }, 
      "location_type" : "APPROXIMATE", 
      "viewport" : { 
       "northeast" : { 
        "lat" : -6.14935190, 
        "lng" : 106.8857620 
       }, 
       "southwest" : { 
        "lat" : -6.171493900000001, 
        "lng" : 106.84546290 
       } 
      } 
     }, 
     "types" : [ "sublocality", "political" ] 
     }, 
     { 
     "address_components" : [ 
      { 
       "long_name" : "Kemayoran", 
       "short_name" : "Kemayoran", 
       "types" : [ "train_station", "transit_station", "establishment" ] 
      }, 
      { 
       "long_name" : "Jalan Garuda", 
       "short_name" : "Jalan Garuda", 
       "types" : [ "route" ] 
      }, 
      { 
       "long_name" : "Pasar Baru", 
       "short_name" : "Pasar Baru", 
       "types" : [ "sublocality", "political" ] 
      }, 
      { 
       "long_name" : "Sawah Besar", 
       "short_name" : "Sawah Besar", 
       "types" : [ "sublocality", "political" ] 
      }, 
      { 
       "long_name" : "Jakarta Pusat", 
       "short_name" : "Jakarta Pusat", 
       "types" : [ "sublocality", "political" ] 
      }, 
      { 
       "long_name" : "Jakarta", 
       "short_name" : "Jakarta", 
       "types" : [ "locality", "political" ] 
      }, 
      { 
       "long_name" : "Jakarta Capital Region", 
       "short_name" : "Jakarta Capital Region", 
       "types" : [ "administrative_area_level_1", "political" ] 
      }, 
      { 
       "long_name" : "Indonesia", 
       "short_name" : "ID", 
       "types" : [ "country", "political" ] 
      }, 
      { 
       "long_name" : "10710", 
       "short_name" : "10710", 
       "types" : [ "postal_code" ] 
      } 
     ], 
     "formatted_address" : "Kemayoran, Jalan Garuda, Jakarta 10710, Indonesia", 
     "geometry" : { 
      "location" : { 
       "lat" : -6.16204140, 
       "lng" : 106.84154990 
      }, 
      "location_type" : "APPROXIMATE", 
      "viewport" : { 
       "northeast" : { 
        "lat" : -6.160692419708497, 
        "lng" : 106.8428988802915 
       }, 
       "southwest" : { 
        "lat" : -6.163390380291502, 
        "lng" : 106.8402009197085 
       } 
      } 
     }, 
     "types" : [ "train_station", "transit_station", "establishment" ] 
     }, 
     { 
     "address_components" : [ 
      { 
       "long_name" : "Kemayoran", 
       "short_name" : "Kemayoran", 
       "types" : [ "sublocality", "political" ] 
      }, 
      { 
       "long_name" : "Kemayoran", 
       "short_name" : "Kemayoran", 
       "types" : [ "sublocality", "political" ] 
      }, 
      { 
       "long_name" : "Jakarta Pusat", 
       "short_name" : "Jakarta Pusat", 
       "types" : [ "sublocality", "political" ] 
      }, 
      { 
       "long_name" : "Jakarta", 
       "short_name" : "Jakarta", 
       "types" : [ "locality", "political" ] 
      }, 
      { 
       "long_name" : "Jakarta Capital Region", 
       "short_name" : "Jakarta Capital Region", 
       "types" : [ "administrative_area_level_1", "political" ] 
      }, 
      { 
       "long_name" : "Indonesia", 
       "short_name" : "ID", 
       "types" : [ "country", "political" ] 
      }, 
      { 
       "long_name" : "10620", 
       "short_name" : "10620", 
       "types" : [ "postal_code" ] 
      } 
     ], 
     "formatted_address" : "Kemayoran, Jakarta 10620, Indonesia", 
     "geometry" : { 
      "bounds" : { 
       "northeast" : { 
        "lat" : -6.1602730, 
        "lng" : 106.8572680 
       }, 
       "southwest" : { 
        "lat" : -6.1664210, 
        "lng" : 106.851820 
       } 
      }, 
      "location" : { 
       "lat" : -6.16165420, 
       "lng" : 106.8550150 
      }, 
      "location_type" : "APPROXIMATE", 
      "viewport" : { 
       "northeast" : { 
        "lat" : -6.1602730, 
        "lng" : 106.8572680 
       }, 
       "southwest" : { 
        "lat" : -6.1664210, 
        "lng" : 106.851820 
       } 
      } 
     }, 
     "types" : [ "sublocality", "political" ] 
     }, 
     { 
     "address_components" : [ 
      { 
       "long_name" : "Kemayoran", 
       "short_name" : "Kemayoran", 
       "types" : [ "sublocality", "political" ] 
      }, 
      { 
       "long_name" : "Krembangan", 
       "short_name" : "Krembangan", 
       "types" : [ "sublocality", "political" ] 
      }, 
      { 
       "long_name" : "Surabaya", 
       "short_name" : "Surabaya", 
       "types" : [ "locality", "political" ] 
      }, 
      { 
       "long_name" : "East Java", 
       "short_name" : "East Java", 
       "types" : [ "administrative_area_level_1", "political" ] 
      }, 
      { 
       "long_name" : "Indonesia", 
       "short_name" : "ID", 
       "types" : [ "country", "political" ] 
      }, 
      { 
       "long_name" : "60176", 
       "short_name" : "60176", 
       "types" : [ "postal_code" ] 
      } 
     ], 
     "formatted_address" : "Kemayoran, Surabaya 60176, Indonesia", 
     "geometry" : { 
      "bounds" : { 
       "northeast" : { 
        "lat" : -7.2369960, 
        "lng" : 112.7333040 
       }, 
       "southwest" : { 
        "lat" : -7.2465120, 
        "lng" : 112.726760 
       } 
      }, 
      "location" : { 
       "lat" : -7.2417540, 
       "lng" : 112.7300320 
      }, 
      "location_type" : "APPROXIMATE", 
      "viewport" : { 
       "northeast" : { 
        "lat" : -7.2369960, 
        "lng" : 112.7333040 
       }, 
       "southwest" : { 
        "lat" : -7.2465120, 
        "lng" : 112.726760 
       } 
      } 
     }, 
     "types" : [ "sublocality", "political" ] 
     }, 
     { 
     "address_components" : [ 
      { 
       "long_name" : "Kemayoran", 
       "short_name" : "Kemayoran", 
       "types" : [ "sublocality", "political" ] 
      }, 
      { 
       "long_name" : "Bangkalan", 
       "short_name" : "Bangkalan", 
       "types" : [ "locality", "political" ] 
      }, 
      { 
       "long_name" : "Bangkalan Regency", 
       "short_name" : "Bangkalan Regency", 
       "types" : [ "administrative_area_level_2", "political" ] 
      }, 
      { 
       "long_name" : "East Java", 
       "short_name" : "East Java", 
       "types" : [ "administrative_area_level_1", "political" ] 
      }, 
      { 
       "long_name" : "Indonesia", 
       "short_name" : "ID", 
       "types" : [ "country", "political" ] 
      }, 
      { 
       "long_name" : "69116", 
       "short_name" : "69116", 
       "types" : [ "postal_code" ] 
      } 
     ], 
     "formatted_address" : "Kemayoran, Bangkalan 69116, Indonesia", 
     "geometry" : { 
      "bounds" : { 
       "northeast" : { 
        "lat" : -7.0243290, 
        "lng" : 112.7483040 
       }, 
       "southwest" : { 
        "lat" : -7.039670, 
        "lng" : 112.7349340 
       } 
      }, 
      "location" : { 
       "lat" : -7.031263999999999, 
       "lng" : 112.7417250 
      }, 
      "location_type" : "APPROXIMATE", 
      "viewport" : { 
       "northeast" : { 
        "lat" : -7.0243290, 
        "lng" : 112.7483040 
       }, 
       "southwest" : { 
        "lat" : -7.039670, 
        "lng" : 112.7349340 
       } 
      } 
     }, 
     "types" : [ "sublocality", "political" ] 
     } 
    ], 
    "status" : "OK" 
} 

我得到了几个kemayoran。

如果我做的:

http://maps.googleapis.com/maps/api/geocode/json?address=kemayoran&sensor=false&bounds=-6,106|-5,107

我思凯马约兰。但只有一个即使所有其他kemayoran都在界限内。

我指定的约束正确的第一个查询才行,你都可以看到,马腰兰的纬度logitude是很好的范围内-6,106 | -5,107

如果我做

http://maps.googleapis.com/maps/api/geocode/json?address=kemay&sensor=false&bounds=-6,106|-5,107

我得到了Kemnay而不是Kemayoran。

相比之下,与本次非公开API: http://maps.google.com/maps/suggest?q=kemay&cp=2&hl=en&gl=&v=2&clid=1&json=a&ll=-6.230664,106.55365&spn=1,1&src=1&num=20&numps=0

结果恰恰是我想不同的是它不给纬度和经度,更何况是一个私有API什么。

那么,我该怎么办?

回答

2

界限只是一种方式来偏见搜索结果,如Google's documentation of the webservice中所述。既然你指定了一个搜索字符串“Kemay”,它会在苏格兰找到完全匹配的。然而,正如您在输入确切字符串时所发现的那样,它会找到您要查找的内容。

编辑:

这的确听起来像你正在寻找类似的地方自动完成功能(无论是via webservice,或更好,但通过javascript library)一个功能。那个人在输入部分字符串时似乎给出了更准确的结果。

+0

我知道。但是为什么如果我在我的范围内键入kemayoran,只有一个kemayorans出现而不是2? –

+0

在问这个问题之前,我很清楚这一点。我想要的东西,行为像http://maps.google.com/maps/suggest?q=kemay&cp=2&hl=en&gl=&v=2&clid=1&json=a&ll=-6.230664,106.55365&spn=1,1&src=1&num=20&numps= 0还 –

+0

更新的答案建议另一个替代 –