Я использую google maps api 3, чтобы получить город из координат. Я прочитал ReverseGeocoding, но я не понимаю, как иметь правильное значение города от этого вида результата: http://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452&sensor=falseКак получить город из координат?
ответ
это Funktion возвращает имя запрашиваемого города на широту/долготу. Поскольку этот Скрипт с конца 2012 года. В то время работал отлично. Возвращает «неизвестно», когда API не находит.
function get_api ($lat, $long) {
$get_API = "http://maps.googleapis.com/maps/api/geocode/json?latlng=";
$get_API .= round($lat,2).",";
$get_API .= round($long,2);
$jsonfile = file_get_contents($get_API.'&sensor=false');
$jsonarray = json_decode($jsonfile);
if (isset($jsonarray->results[1]->address_components[1]->long_name)) {
return($jsonarray->results[1]->address_components[1]->long_name);
}
else {
return('Unknown');
}
}
редактирование: и jquery.
<p id="city"></p>
<script>
$(document).ready(function() {
// define lat/long
var lat = 37.42;
var long = -122.08;
$.ajax({
type: 'GET',
dataType: "json",
url: "http://maps.googleapis.com/maps/api/geocode/json?latlng="+lat+","+long+"&sensor=false",
data: {},
success: function(data) {
$('#city').html(data);
$.each(data['results'],function(i, val) {
$.each(val['address_components'],function(i, val) {
if (val['types'] == "locality,political") {
if (val['long_name']!="") {
$('#city').html(val['long_name']);
}
else {
$('#city').html("unknown");
}
console.log(i+", " + val['long_name']);
console.log(i+", " + val['types']);
}
});
});
console.log('Success');
},
error: function() { console.log('error'); }
});
});
</script>
обратите внимание на комментарий Shivan Raptors, хотя –
Этот код предполагает, что желаемый результат во второй записи адреса_компонента второго результата, нет гарантии, что (или всегда будет, даже если она работает сейчас) желаемый результат. Вы действительно должны искать результат с типом [type] (https://developers.google.com/maps/documentation/javascript/geocoding#GeocodingAddressTypes) данных, которые вы ищете (местность: указывает на включенную городскую или городскую политическую объект) и вернуть это. – geocodezip
Поскольку OP не указывает язык программирования, ваш PHP-код может не подходить для OP. * sidenote: * 'return' не является функцией, поэтому' return 'Unknown'; 'более точно – Raptor
В HTML5 странице мы можем получить название города следующим образом:
<script src="//maps.googleapis.com/maps/api/js?v=3.exp&sensor=true"></script>
<script>
(function() {
if(!!navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position) {
var geocoder = new google.maps.Geocoder();
var geolocate = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
console.log(position.coords.latitude + ', ' + position.coords.longitude);
geocoder.geocode({'latLng': geolocate}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
var result;
if (results.length > 1) {
result = results[1];
} else {
result = results[0];
}
//console.log(result);
console.log(result.address_components[2].long_name + ', ' + result.address_components[3].long_name);
}
});
});
</script>
так, ваш вопрос "Как разобрать JSON"? – Raptor
да! То есть, хо я могу разобрать массив с JS? – Tab
см. Мой ответ .. –