【发布时间】:2012-01-28 04:00:42
【问题描述】:
我已经使用 php 实现了这一点,但我想将其更改为在客户端使用 JQuery。
我想要做的是从从 Googlemaps 收到的 JSON 文件中获取数据,并使用它将纬度和经度保存到我的数据库中,但是我什至无法将数据放入变量中。
<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"
}
经过一两天或研究和调整后,我无法找出问题所在,我希望对于已经去过那里并这样做过的人来说,这是一个简单的问题,因为我一直卡住了..
------------------------------更新---- ---------------------
据我所知,没有办法用上面的方法做谷歌地图的JSON,而是你必须使用下面的代码:
<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>
现在的问题是从返回的 JSON 文件的 .location 部分获取实际的纬度和经度。 当'警报(TEST); ' 运行,输出如下:
(34.0868517, -117.26173289999997)
这是正确的经度/纬度对,但是当我尝试输入单个经度或纬度时,我得到以下输出:(来自警报(经度))
function () {
return this[a];
}
有什么想法吗?
------------------------------已解决----- -------------------------------------------
好的,这是一个简单的解决方案.. 改变:
var longitude = results[0].geometry.location.lng;
到:
var longitude = results[0].geometry.location.lng();
【问题讨论】:
-
您请求的网址与文档不同:maps.googleapis.com/maps/api/geocode/… 是文档中的示例网址。
标签: jquery json google-maps-api-3 geocoding