SQLデータベースに保存されている店舗の場所の緯度と経度を取得するためにajax呼び出しを行っています。これは私の ajax 呼び出しで、すべての緯度と経度の json オブジェクトを返します。
$.ajax({
type:"GET",
dataType:"json",
url:"<?php echo site_url("sandbox_faizan/get_coordinates") ?>",
success: function(result)
{
my_arr = result;
for(var i=0;i<result.length;i++)
{
store_points(result[i].lat,result[i].lng)
}
});
これで、マップにマーカーを追加するために使用される独自の配列オブジェクトに、この json オブジェクトを格納しました。これは、マップが読み込まれる前にここで行われます。
<script type="text/javascript">
var point=[];
point = [
new google.maps.LatLng(37.569309, -122.32617500000003)
];
function store_points(lat,lng)
{
//used to show markers
point = [
new google.maps.LatLng(lat,lng)
];
}
var map;
var mapOptions = {
center: new google.maps.LatLng(51.3, -1.80),
zoom: 6,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var pinImage = new google.maps.MarkerImage("http://chart.apis.google.com/chart?chst=d_map_xpin_letter_withshadow&chld=pin_star|%E2%80%A2|CC3300|000000|FF9900", new google.maps.Size(70, 83), new google.maps.Point(0, 0), new google.maps.Point(10, 34));
var pinShadow = new google.maps.MarkerImage("http://chart.apis.google.com/chart?chst=d_map_pin_shadow", new google.maps.Size(89, 85), new google.maps.Point(0, 0), new google.maps.Point(12, 35));
function initialize() {
map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
for (var i = 0; i < point.length; i++) {
var marker = new MarkerWithLabel({
map: map,
position: point[i],
icon: pinImage,
shadow: pinShadow,
labelContent: count,
labelAnchor: new google.maps.Point(12, -5),
labelClass: "labels"
});
}
}
google.maps.event.addDomListener(window, 'load', initialize);
私の問題は、(コードの最後の行に見られるように) ウィンドウの読み込み時にマップが読み込まれることですが、私の ajax 呼び出しは後で実行されるため、ポイント配列は読み込まれません。最初に緯度と経度を取得し、ポイント配列にデータを入力してから、ポイント配列からのマーカー情報を使用してマップをロードするように ajax 呼び出しを強制するにはどうすればよいですか。