私はこれを数日間機能させようとしてきましたが、これが私の最後の試みです。
そして、同様の目的で別の質問を投稿してしまったことをお詫びします。
最善の方法でそれを理解しようとしました。
これが問題です。初期化関数で使用したいデータが別のページにあります。
ここのメンバーの 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"
}
]
};