8

を使用しgoogle.maps.places.AutocompleteServiceて場所検索の候補を取得していますが、一部の予測をジオコーディングできません。

この例: 「storms river mouth」を検索すると、返される予測の 1 つが「Storms River Mouth Rest Camp, South Africa」ですが、この住所をジオコーディングして緯度/経度を取得することはできません。例: http ://maps.googleapis.com/maps/api/geocode/json?address=Storms%20River%20Mouth%20Rest%20Camp,%20South%20Africa&sensor=true

オートコンプリート予測の緯度/経度の値を取得する方法はありますか?

または、Google オートコンプリートがジオコーディングできない予測を返す理由がわかりません。

以下は、私が使用しているロジックとコードの基本的な例です。

var geocoder = new google.maps.Geocoder();
var service = new google.maps.places.AutocompleteService(null, {
  types: ['geocode'] 
});

service.getQueryPredictions({ input: query }, function(predictions, status) {
  // Show the predictions in the UI
  showInAutoComplete(predictions);
};

// When the user selects an address from the autcomplete list
function onSelectAddress(address) {
  geocoder.geocode({ address: address }, function(results, status) {
   if (status !== google.maps.GeocoderStatus.OK) {
      // This shouldn't never happen, but it does
      window.alert('Location was not found.');
    }
    // Now I can get the location of the address from the results
    // eg: results[0].geometry.location
  });
}

[編集] - 実際の例をここで見る: http://demos.badsyntax.co/places-search-bootstrap/example.html

4

6 に答える 6

11

getPlacePredictions()の代わりに使用しgetQueryPredictions()ます。これによりreference、場所の が返されます。これを使用して、 を使用して詳細を取得できますplacesService.getDetails()。詳細には、場所のジオメトリが含まれます。

注: placesService は google.maps.places.PlacesService オブジェクトです。

于 2013-01-19T13:02:55.517 に答える
2

これを試して:

function onSelectAddress(address, callback) {
    var geocoder = new google.maps.Geocoder();
    geocoder.geocode({'address': address}, function(results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
            callback(results[0].geometry.location);
        } else {
            alert("Can't find address: " + status);
            callback(null);
        }
    });
}

次に、呼び出しとコールバック:

onSelectAddress('your address here', function(location){
//Do something with location
if (location)
     alert(location);
});

英語でごめんなさい。質問があります:showInAutoComplete()メソッドを見せてもらえますか?hrefのリストに予測を表示していますが、「クリックされた」アドレス値を保存する方法がわかりません。

于 2013-02-07T09:22:18.390 に答える
-1

多分これはあなたを助けるかもしれません。

 var autocomplete = new google.maps.places.Autocomplete(this.input);
 //this.input is the node the AutocompleteService bindTo
 autocomplete.bindTo('bounds', this.map);
 //this.map is the map which has been instantiated

 google.maps.event.addListener(autocomplete, 'place_changed', function() {
     var place = autocomplete.getPlace();
     //then get lattude and longitude
     console.log(place.geometry.location.lat());
     console.log(place.geometry.location.lng());
 }
于 2013-01-19T12:56:31.297 に答える