Я реализовал это с помощью php, но я хотел изменить его на использование JQuery на стороне клиента.
Я пытаюсь получить данные из файла JSON, полученные из Googlemaps, и использовать их для сохранения широты и долготы в моей базе данных, однако я не смог даже получить данные в переменные.
<script type="text/javascript" src="js/jquery-1.7.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
$("#test").append('STUFF HERE');
var geocodeURL = 'http://maps.google.com/maps/api/geocode/json?address=92408&sensor=false';
$.getJSON(geocodeURL, function(data){
var latitude = data.results.geometry.location.lat;
var longitude = data.results.geometry.location.lng;
alert(longitude);
$("#test").append('<p>'+latitude +'</p><p>'+longitude+'</p>');
});
});
</script>
<div id="test" ></div>
Когда я вставляю GeocodeURL в браузер, я получаю следующее возвращение:
{
"results" : [
{
"address_components" : [
{
"long_name" : "92408",
"short_name" : "92408",
"types" : [ "postal_code" ]
},
{
"long_name" : "San Bernardino",
"short_name" : "San Bernardino",
"types" : [ "locality", "political" ]
},
{
"long_name" : "San Bernardino",
"short_name" : "San Bernardino",
"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" ]
}
],
"formatted_address" : "San Bernardino, CA 92408, USA",
"geometry" : {
"bounds" : {
"northeast" : {
"lat" : 34.10665490,
"lng" : -117.208780
},
"southwest" : {
"lat" : 34.0501660,
"lng" : -117.3071210
}
},
"location" : {
"lat" : 34.08685170,
"lng" : -117.26173290
},
"location_type" : "APPROXIMATE",
"viewport" : {
"northeast" : {
"lat" : 34.10665490,
"lng" : -117.208780
},
"southwest" : {
"lat" : 34.0501660,
"lng" : -117.3071210
}
}
},
"types" : [ "postal_code" ]
}
],
"status" : "OK"
}
После одного или двух дней или исследования и настройки я не смог выяснить, в чем дело, и я надеюсь, что это простой вопрос для человека, который уже был там и сделал это, потому что я был застрял ..
------------------------------ UPDATE ---------------- ---------------------
Итак, насколько я могу судить, нет способа сделать JSON Google Map с помощью вышеуказанного метода, и вместо этого вы должны использовать следующий код:
<script type="text/javascript"
src="http://maps.googleapis.com/maps/api/js?sensor=true">
</script>
<script type="text/javascript" src="js/jquery-1.7.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
var geocoder = new google.maps.Geocoder();
var address= '92408';
geocoder.geocode({ 'address': address}, function (results, status) {
if (status == google.maps.GeocoderStatus.OK)
{
var TEST = results[0].geometry.location;
var longitude = results[0].geometry.location.lng;
alert(TEST);
alert(longitude);
}
else
{
result = "Unable to find address: " + status;
}
});
});
</script>
<div id="test" ></div>
Теперь проблема заключается в получении фактической широты и долготы из части .location возвращаемого файла JSON.
Когда «оповещение (ТЕСТ); ', выводится следующее:
(34.0868517, -117.26173289999997)
Это правильная пара long / lat, но когда я пытаюсь указать индивидуальную долготу или широту, я получаю следующий вывод: (из alert (longitude))
function () {
return this[a];
}
Есть идеи у кого-нибудь?
----------------------------------------- решаемые ----- -------------------------------
Хорошо, это было простое решение ..
Изменение:
var longitude = results[0].geometry.location.lng;
до:
var longitude = results[0].geometry.location.lng();