オートコンプリートメソッドを使用して場所の提案を取得しています。選択する場所をクリックすると、place.geometry.location
の下にあるLat
とLng
が次のように抽出されます。 。
私の観察によると、キーib
とjb
はセッションごとに変化し続けます。 Lat
とLng
を予測どおりに抽出する方法はありますか?
$(document).ready(function() {
var mapOptions = {
center : new google.maps.LatLng(-33.8688, 151.2195),
zoom : 13,
mapTypeId : google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById('map'), mapOptions);
$('#searchTextField').bind('keydown keypress', function() {
setTimeout(function() {
var inputQuery = $('#searchTextField').val();
if (inputQuery.length >= 2) {
//console.log(inputQuery);
/*
var service = new google.maps.places.AutocompleteService();
service.getPlacePredictions({
input : inputQuery
}, callback);
*/
var input = document.getElementById('searchTextField');
var options = {
types : ['geocode']
};
var autocomplete = new google.maps.places.Autocomplete(input, options);
// Acting on Selecting a place
google.maps.event.addListener(autocomplete, 'place_changed', function() {
//infowindow.close();
var place = autocomplete.getPlace();
console.log(place);
console.log(place.formatted_address);
console.log(place.name);
console.log(place.geometry.location);
console.log(place.geometry.location[0]);
// Show the map to the current location selected
if (place.geometry.viewport) {
map.fitBounds(place.geometry.viewport);
} else {
map.setCenter(place.geometry.location);
map.setZoom(17);
// Why 17? Because it looks good.
}
var marker = new google.maps.Marker({
position : place.geometry.location,
map : map,
draggable : true,
});
$.each(place.geometry.location, function(key, value) {
console.log(key + ": " + value);
});
});
}
}, 0);
});
});
_place.geometry.location
_は LatLng
であるため、その.lat()
メソッドと.lng()
メソッドを呼び出すことができます。
_var location = place.geometry.location;
var lat = location.lat();
var lng = location.lng();
_
これらのメソッドがこのオブジェクトの検査に存在することがわかります。
発見したib
やjb
などの文書化されていないプロパティは絶対に使用しないでください。 Googleは、 Closure Compiler または同様のツールを使用してMaps APIをコンパイルします。このツールは、プライベートプロパティと変数のランダムな名前を生成します。