1

我在 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 object undefined,所以,你们有没有一个使用 JSON 调用该服务到谷歌的示例?我在 ASP.Net 上工作 在此处输入图像描述


嗨,我没有提出这种请求的经验,我有以下代码:

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,无效请求...

任何想法 ??

4

2 回答 2

1

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

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

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

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

于 2013-05-14T22:10:44.700 回答
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

并忽略上述关于“仅限服务器”的陈述。

(关于 API 密钥的注释通常是有效的。)

于 2014-03-14T16:47:14.337 回答