2012-11-28 53 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

更新的答案建議另一個替代 –