【发布时间】:2012-09-15 15:13:18
【问题描述】:
我目前正在处理一个页面,该页面最终将在 Google 地图上绘制一系列标记(它们的数据来自 JSON 对象)。
我似乎无法配置出一种保持标记数组填充的方法。在 getJSON 调用范围之外,该数组为空。
var markers = [];
var map;
var mapOptions = {
center: new google.maps.LatLng(0.0, 0.0),
zoom: 10,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
$.getJSON("Home/GetLocations", function (data) {
for (index in data) addMarker(data[index]);
function addMarker(_data) {
var marker = new google.maps.Marker({
position: new google.maps.LatLng(_data.lat, _data.lng),
map: map,
title: _data.name
});
markers.push(marker);
}
//markers = 3 at this point.
});
// markers = 0 at this point.
我仍然需要填充数组的原因是我打算为页面上的每个标记创建一个超链接,以便可以单击它并且地图会缩放到正确的标记。理想情况下,这将是一个带有 javascript 函数调用的超链接,这个 javascript 函数将作为参数传递给选定的超链接的标记索引,允许我去例如
function zoomIn(selectedIndex) {
map.setCenter(markers[selectedIndex].getPosition());
}
但是此时,标记数组是空白的,因此不再保存每个标记。
如果有人能指出我正确的方向,那就太好了。谢谢
【问题讨论】:
标签: javascript jquery asp.net-mvc google-maps-api-3 scope