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 を使用して Google にこのサービスを呼び出す例を教えてください。私は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 の結果を返します。これは、API が CORS 経由で許可するか、JSONP 応答を提供しない限り、JavaScript からのクロスドメイン リクエストでは実行できないことです。私が間違っていない限り、この API はそのどちらも行わないため、JavaScript から使用することはできません。

JavaScript からジオコーディングを行う場合は、Maps APIのGeocoding Serviceを使用できます。ただし、これはあなたが使用している電波塔のものをサポートしているとは思いません-少なくともドキュメントでは言及されていません。

また、質問に 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 に答える