Javascript геокодирование от адреса до широты и долготы номера не работает
Я использую следующую функцию геокодирования для преобразования текстового адреса в номера широты и долготы, но это не работает правильно. Предупреждение записывает "undefined".
может кто-нибудь сказать, что случилось?
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">
var geocoder = new google.maps.Geocoder();
var address = "new york";
geocoder.geocode( { 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
var latitude = results[0].geometry.location.latitude;
var longitude = results[0].geometry.location.longitude;
alert(latitude);
}
});
</script>
3 ответа:
попробуйте использовать этот:
var latitude = results[0].geometry.location.lat(); var longitude = results[0].geometry.location.lng();
это немного трудно ориентироваться в api Google, но здесь соответствующей документации.
одно мне было трудно найти, как идти в другом направлении. От координат до адреса. Вот код, который я использовал neded upp. Пожалуйста, не то, что я также использую jquery.
$.each(results[0].address_components, function(){ $("#CreateDialog").find('input[name="'+ this.types+'"]').attr('value', this.long_name); });
то, что я делаю, это перебирать все возвращенные
address_components
и проверить, соответствуют ли их типы любым именам входных элементов, которые у меня есть в a форма. И если они это делают, я устанавливаю значение элемента вaddress_components
значение.
Если вы только заинтересованы во всем формируемом адресе, то вы можете следовать пример Google
вы неправильно обращаетесь к широте и долготе.
попробовать
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script> <script type="text/javascript"> var geocoder = new google.maps.Geocoder(); var address = "new york"; geocoder.geocode( { 'address': address}, function(results, status) { if (status == google.maps.GeocoderStatus.OK) { var latitude = results[0].geometry.location.lat(); var longitude = results[0].geometry.location.lng(); alert(latitude); } }); </script>
тег скрипта в api недавно изменился. Используйте что-то вроде этого, чтобы запросить API геокодирования и вернуть объект JSON
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/geocode/json?address=THE_ADDRESS_YOU_WANT_TO_GEOCODE&key=YOUR_API_KEY"></script>
адрес может быть что-то вроде
1600 + амфитеатр + бульвар, + Гора+вид,+CA (кодировка URI; вы должны его погуглить. Очень полезно)
или просто
1600 амфитеатр бульвар, вид на горы, CA
введя этот адрес
https://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&key=YOUR_API_KEY
внутри браузера, вместе с моим API Key, Я получаю обратно объект JSON, который содержит Широта И Долгота для города Moutain view, CA.{"results" : [ { "address_components" : [ { "long_name" : "1600", "short_name" : "1600", "types" : [ "street_number" ] }, { "long_name" : "Amphitheatre Parkway", "short_name" : "Amphitheatre Pkwy", "types" : [ "route" ] }, { "long_name" : "Mountain View", "short_name" : "Mountain View", "types" : [ "locality", "political" ] }, { "long_name" : "Santa Clara County", "short_name" : "Santa Clara County", "types" : [ "administrative_area_level_2", "political" ] }, { "long_name" : "California", "short_name" : "CA", "types" : [ "administrative_area_level_1", "political" ] }, { "long_name" : "United States", "short_name" : "US", "types" : [ "country", "political" ] }, { "long_name" : "94043", "short_name" : "94043", "types" : [ "postal_code" ] } ], "formatted_address" : "1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA", "geometry" : { "location" : { "lat" : 37.4222556, "lng" : -122.0838589 }, "location_type" : "ROOFTOP", "viewport" : { "northeast" : { "lat" : 37.4236045802915, "lng" : -122.0825099197085 }, "southwest" : { "lat" : 37.4209066197085, "lng" : -122.0852078802915 } } }, "place_id" : "ChIJ2eUgeAK6j4ARbn5u_wAGqWA", "types" : [ "street_address" ] }],"status" : "OK"}
веб-фреймворки такие как AngularJS позвольте нам выполнять эти запросы с легкостью.