0

次のエラーが表示されます。具体的には、json 内にネストされている google.maps.latLng オブジェクトがエラーになる理由がわかりません。

エラー: プロパティの値が無効です: (-19.240542583932452, 148.15044705312494)

このコードでエラーが発生する理由を知っている人はいますか? console.log json.markers[n].latLng firebugは、それが google.maps.latLng オブジェクトであると述べていますが、エラーの一部として含まれている場合、.toString() 出力として明確に表されます (これは単純に、エラー メッセージが文字列であるかどうかによるものです)。

私が取り組んでいるjQuery Google Maps V3 APIプラグインで次の2つの方法を使用しています。ここにいくつかのスニペットがありますが、投稿が乱雑になるだけなので、完全なコードは含めませんでした. わかりやすくするために、一部の json をハードコーディングしました。完成したプラグインでは、ajax 呼び出しによって取得されます。

私のプラグインのinitメソッド内:

    // Request list of markers and return the json object
var markers = methods.requestMarkers();

// Place the markers
methods.placeMarkers(markers);

別の方法として:

requestMarkers : function () {

    return {"markers":[{"id":["7"],"latLng":[new google.maps.LatLng(-19.240542583932452, 148.15044705312494)]},{"id":["8"],"latLng":[new google.maps.LatLng(-28.0497654, 153.43591700000002)]}]}
},

placeMarkers : function ( json ) {

    if (json.markers.length > 0) {

        var markers = new Array();

        for(var n=0; n < json.markers.length; n++){ 

            markers[n] = new google.maps.Marker({
                map         : methods.map,
                position    : json.markers[n].latLng
            });
        }
    }
}

完全なコードは Github で見つけることができ、まだ wip です。

4

1 に答える 1

1

LatLng の呼び出しは、間違ったパラメーターが指定された場合でも、常に LatLng オブジェクトを返します。現在、引数は 1 つの LatLng オブジェクトを含む配列であるため、position を次のように設定する必要があります。

json.markers[n].latLng[0] 

github-code に関連:
requestMarkers-function (AJAX コードを使用) は何も返さないため、マーカーには json-response が含まれません。placeMarkers()内部に電話するdone()

requestMarkers : function () {

$.ajax({
type: "get",
url: methods.options.ASSOCIATED,
dataType: "json"
}).done(function( json ) {
if (json.markers.length > 0) {
methods.placeMarkers(json);
}
});


     }
于 2012-08-26T11:09:57.887 に答える