通过javaScript向谷歌发出请求

时间:2013-05-14 19:44:22

标签: google-maps google-maps-api-3

我在Java Script中有以下代码:

var requestData =
                {
                    "homeMobileCountryCode": 732,
                    "homeMobileNetworkCode": 123,
                    "radioType": "gsm",
                    "carrier": "Vodafone",
                    "cellTowers":
                    [
                        {
                            "cellId": 21282,
                            "locationAreaCode": 2110,
                            "mobileCountryCode": 732,
                            "mobileNetworkCode": 123,
                            "age": 0,
                            "signalStrength": (57 - 110)
                        }
                    ]
                }
var encoded = $.toJSON(requestData);
$.ajax({
                url: "https://www.googleapis.com/geolocation/v1/geolocate?key=AIzaSyA8UJK3m8_X_6GV3T5EWHc86GIuMhITu34",
                type: "POST",
                contentType: "application/json; charset=utf-8",
                dataType: 'json',
                data: encoded,
                success: function (response) {
                    var location = response.location;
                    var lat = location.latitude;
                    var lon = location.longitude;
                    var address = location.address.street_number + " " + location.address.street + " " + location.address.city + " " + location.address.county + " " + location.address.country;
                                },
                error: function (er) {
                    alert("error " + er.message + " codigo: " + er.code);
                }
            });

请求不会返回任何内容并且没有返回警告错误:apears对象未定义,所以,有没有人使用JSON调用此服务google的示例?我正在研究ASP.Net enter image description here


您好我没有做出此类请求的经验,我有以下代码:

Tower tower = new Tower();

        tower.MobileCountryCode = "310";
        tower.MobileNetworkCode = "260";
        tower.CellsTowers = new List<CellTower>();
        tower.CellsTowers.Add(new CellTower()
        {
            CellId = "39627456",
            LocationAreaCode = "40495",
            MobileCountryCode = "310",
            MobileNetworkCode = "260",
            SignalStrength = "-95",
            Age = "0"
        });

        string jsonFormat = ToJSON(tower);

        WebRequest request = WebRequest.Create("https://www.googleapis.com/geolocation/v1/geolocate?key=AIzaSyA8UJK3m8_X_6GV3T5EWHc86GIuMhITu34" + jsonFormat);

我有以下功能:

string ToJSON(object obj)
    {
        JavaScriptSerializer serializer = new JavaScriptSerializer();
        return serializer.Serialize(obj);
    }

但服务响应:错误400,无效请求......

任何想法??

2 个答案:

答案 0 :(得分:1)

您正在尝试使用JavaScript中的Google Maps Geolocation API。这是一个JSON API。它仅用于您的服务器,而不能用于JavaScript代码。

API返回JSON结果,除非API允许通过CORS或提供JSONP响应,否则您无法使用JavaScript的跨域请求。除非我弄错了,否则这个API都没有,所以你不能在JavaScript中使用它。

如果您想使用JavaScript进行地理编码,可以使用Maps API中的Geocoding Service。我不认为这支持你正在使用的无线电塔的东西 - 至少文档没有提到它。

此外,您在问题中发布了API密钥。如果这是一个浏览器API密钥,那没问题,但如果它是您通常与Geolocation API一起使用的那种服务器API密钥,那么该密钥现在已被破坏。转到您的API Console,删除此密钥,然后创建一个新密钥 - 并且不要共享该新密钥!

答案 1 :(得分:0)

尝试         var jsonFormat = JSON.stringify(rpcReq);

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify

另请参阅API文档 https://developers.google.com/maps/documentation/business/geolocation/?hl=zh-CN

并忽略上述关于&#34;仅限服务器&#34;的陈述。

(关于API密钥的评论通常是有效的。)