0

formated_addressプロパティを抽出しようとして失敗しました。

次のWebサービスは、以下のJSONをコンソールに記録します。を使用してフォーマットされたアドレスを取得できませんreturnedData.d.results[0].formatted_address

 $.ajax({
        type: "POST",
        url: "ReportIncident.aspx/ReverseGeocode",
        data: "{latitude:" + latitude + ",longitude:" + longitude + "}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (returnedData)
        {
          console.log(returnedData);
        }
    });

jsonの形式は、ここGoogleの形式とまったく同じです。

Edit Darinは、私が自分自身と矛盾していると指摘しました。Webサービスは、上記のリンクのすべてを広告オブジェクトにラップしますが、それについては言及しませんでした。

ここに画像の説明を入力してください

さらに編集 するWebサービスは次のとおりです。

[WebMethod]
        public static string ReverseGeocode(decimal latitude, decimal longitude)
        {
            // Create the web request  

            string url = "http://maps.googleapis.com/maps/api/geocode/json?latlng=" + latitude + "," + longitude +"&sensor=true";
            HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;

            // Get response  
            using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
            {
                // Get the response stream  
                StreamReader reader = new StreamReader(response.GetResponseStream());

                return reader.ReadToEnd();
            }
        }

そしてここにjavascriptがあります:

/Gets the current location of the user
function getLocation()
{
    if (navigator.geolocation)
    {
        navigator.geolocation.getCurrentPosition(showPosition);
    }

}

function showPosition(position)
{
    var latitude = position.coords.latitude;
    var longitude = position.coords.longitude;

    $.ajax({
        type: "POST",
        url: "ReportIncident.aspx/ReverseGeocode",
        data: "{latitude:" + latitude + ",longitude:" + longitude + "}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (returnedData)
        {
            alert(returnedData.d[0].results[0].formatted_address);
            console.log(returnedData);
        }
    });
4

3 に答える 3

1

ノードreturnedData.results[0].formatted_addressなしで使用してみましたか。.d.それは存在しません!

于 2012-06-28T13:33:26.473 に答える
0

この問題に対する答えは、Web サービスが json ではなく文字列を返すことです。組み込みの JavaScript シリアライザーは使用されません。eval キーワードまたはより安全なものを使用する必要があります。たまたま、Google Maps Javascript API を使用することになりましたが、それはとにかくずっと簡単でした。

于 2012-07-05T09:49:06.890 に答える
0

「.d」を削除します

returnedData.results[0].formatted_address

ただし、これを行うと、常に最初のノードのみが取得されます

于 2012-06-28T13:35:44.427 に答える