首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery和谷歌地图json响应

jQuery和谷歌地图json响应
EN

Stack Overflow用户
提问于 2011-04-14 14:58:29
回答 4查看 10.9K关注 0票数 6

我在从google maps api获取地理位置信息时遇到问题

代码非常简单明了

代码语言:javascript
复制
$.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");
}

我总是得到一个错误的反馈。我也直接试过了(我在某处读到回调应该设置在结尾……

代码语言:javascript
复制
$.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/上“玩”它。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-04-15 17:31:54

如果这对某人有帮助..。我放弃了,我完全改变了逻辑本身,现在它像预期的那样工作:

首先,我将google地图js附加到正文中。

代码语言:javascript
复制
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的地理编码对象

代码语言:javascript
复制
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变量是我们自己的用户设置命名空间

希望它能帮助到某些人

票数 3
EN

Stack Overflow用户

发布于 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的地理编码器对象来运行请求。

票数 1
EN

Stack Overflow用户

发布于 2011-04-14 15:24:44

我已经看过这个问题了,但我不知道发生了什么。我确实发现的一件事是,如果我向错误中添加一个数据参数,然后警告(data.status),它会给出代码200。我能找到的唯一地方就是将它解析为v2的成功代码?!

代码语言:javascript
复制
error: function(data) {
    alert(data.status);
}

另外,我不确定您是否可以使用jsonp,因为阅读文档时,它似乎在querystring上添加了额外的参数?当我删除jsonpcallback并将数据类型更改为json时,响应代码开始显示0。

没什么用抱歉我得去上班了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5659663

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档