我已经使用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"
}
经过一两天的研究和调整后,我一直无法找出问题所在,我希望这对于那些已经去过那里的人来说是一个简单的问题,因为我已经去过卡住..
------------------------------ UPDATE ---------------- ---------------------
据我所知,使用上述方法无法使用Google Map的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();
答案 0 :(得分:1)
另外,我发现这个帖子可能会有所帮助: using jquery.getJson with Google's GeoCoding HTTP Service 与不提供回叫功能有关