我在从Google Maps API获取地理位置信息时遇到麻烦
代码很简单
$.ajax({
type: "GET",
cache: false,
url: "http://maps.googleapis.com/maps/api/geocode/json",
dataType: "jsonp",
data: {
address: "Ljubljana " + "Slovenia",
sensor: "false"
},
jsonpCallback:'json_response',
success: function(data) {
top.console.debug(data);
$('#location_setter').dialog('close');
},
error: function() {
alert("Error.");
}
});
function json_response(data){
alert("works");
}
我总是会得到一个错误。
我也直接尝试过(我读过某个地方应该在结尾处设置回调...
$.ajax({
type: "GET",
cache: true,
url: "http://maps.googleapis.com/maps/api/geocode/json?address=Ljubljana Slovenia&sensor=false",
dataType: "jsonp",
jsonpCallback:'json_response',
success: function(data) {
top.console.debug(data);
$('#location_setter').dialog('close');
},
error: function() {
alert("Error.");
}
});
请求网址格式正确:
http://maps.googleapis.com/maps/api/geocode/json?address=Ljubljana%20Slovenia&sensor=false&callback=json_response
它给了我正确的json
请指教!
您可以在http://jsfiddle.net/PNad9/上“玩”它
最佳答案
如果它对某人有帮助...我放弃了,我完全改变了逻辑本身,现在它可以按预期工作:
首先,我将google maps js附加到正文中
var script = document.createElement( 'script' );
script.type = 'text/javascript';
script.src = 'http://maps.google.com/maps/api/js?sensor=false&callback=get_longlat';
$("body").append( script );
如您所见,我指定了回调函数get_longlat ...
所以我定义了这个功能,并使用了谷歌的地理编码对象
function get_longlat(address){
var geocoder = new google.maps.Geocoder();
if(!address){
var p = US.get("location_postal");
var c = US.get("location_city");
var a = US.get("location_address");
var address = a + ', ' + p + ' ' + c + ', Slovenia';
}
if (geocoder) {
geocoder.geocode({ 'address': address }, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
US.set("location_lat", results[0].geometry.location.lat(), 60);
US.set("location_lon", results[0].geometry.location.lng(), 60);
$('#location_setter').dialog('close');
}
else {
console.log('No results found: ' + status);
}
});
}
}
里面的US变量是我们自己的USER SETTINGS命名空间
希望对别人有帮助
关于jQuery和Google Maps JSON响应,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5659663/