1

私はこれを数日間機能させようとしてきましたが、これが私の最後の試みです。

そして、同様の目的で別の質問を投稿してしまったことをお詫びします。

最善の方法でそれを理解しようとしました。

これが問題です。初期化関数で使用したいデータが別のページにあります。

ここのメンバーの 1 人が、deferred.done の使用を提案しました。

部分的に機能しました。他のページのデータが読み込まれ、 alert(MapData);があれば表示できます。初期化関数で。

しかし、実際の作業のために初期化関数でそのデータを使用しようとすると、MapData.users is undefinedエラーが発生します。

アラートボックスにロードしたときに問題ないように見えるので、わかりません。

提案してください!

    $(function CheckinMap() {
        $.when($.ajax({
            type: "GET",
            url: "content/home/index.cs.asp?Process=ViewCheckinMap"
        })).done(      function initialize(data) {
            var MapData = data;
            var center = new google.maps.LatLng(48.404840395764175, 2.6845264434814453);
            var map = new google.maps.Map(document.getElementById('checkinmap'), {
              zoom: 2,
              center: center,
              mapTypeId: google.maps.MapTypeId.ROADMAP,
              maxZoom: 4
            });
            var markers = [];
            for (var i = 0; i < MapData.users.length; i++) {
              var location = MapData.users[i];
              var latLng = new google.maps.LatLng(location.latitude,
                  location.longitude);
              var marker = new google.maps.Marker({
                position: latLng
              });
              markers.push(marker);
            }
            var markerCluster = new MarkerClusterer(map, markers);
        });
    });

これは、初期化関数で使用する必要があるデータです。

{
  "users": [
    {
      "latitude": "48.405163",
      "longitude": "2.684659"
    },
    {
      "latitude": "43.7347242529278",
      "longitude": "7.42198348045349"
    }
  ]
};
4

1 に答える 1

0

呼び出しで指定dataType: 'json'していません。$.ajax()これによりdata、デコードされたオブジェクトではなく、生のテキスト JSON 応答になる可能性があります。

于 2012-06-04T14:40:16.057 に答える