我在从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.");
}
});请求url格式正确:
http://maps.googleapis.com/maps/api/geocode/json?address=Ljubljana%20Slovenia&sensor=false&callback=json_response
并且它给出了正确的json。
敬请指教!
你可以在http://jsfiddle.net/PNad9/上“玩”它。
发布于 2011-04-15 17:31:54
如果这对某人有帮助..。我放弃了,我完全改变了逻辑本身,现在它像预期的那样工作:
首先,我将google地图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...
所以我定义了这个函数并使用了google的地理编码对象
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变量是我们自己的用户设置命名空间
希望它能帮助到某些人
发布于 2011-05-01 12:54:07
Here is a good post解释为什么你会从原始问题中体验到这种行为。向google发出请求的URL (http://maps.googleapis.com/maps/api/geocode/json)不会返回jsonp可解析响应,它只返回一个原始的JSON对象。Google拒绝在提供的回调中包装JSON。
根据我所知,解决这个问题的方法是将您的请求发送到这个URL:http://maps.google.com/maps/geo,并在请求中包含一个Google Maps API密钥。此外,似乎有必要确保请求中的回调参数是查询字符串的最后一个参数。
下面是来自服务的可解析响应的jsfiddle (即使它返回一个错误,因为没有提供有效的Google Maps API密钥):http://jsfiddle.net/sCa33/
另一种选择似乎是做你已经做过的事情,并使用Google的地理编码器对象来运行请求。
发布于 2011-04-14 15:24:44
我已经看过这个问题了,但我不知道发生了什么。我确实发现的一件事是,如果我向错误中添加一个数据参数,然后警告(data.status),它会给出代码200。我能找到的唯一地方就是将它解析为v2的成功代码?!
error: function(data) {
alert(data.status);
}另外,我不确定您是否可以使用jsonp,因为阅读文档时,它似乎在querystring上添加了额外的参数?当我删除jsonpcallback并将数据类型更改为json时,响应代码开始显示0。
没什么用抱歉我得去上班了。
https://stackoverflow.com/questions/5659663
复制相似问题