如果我滥用任何技术术语,请原谅我;我对编程还是很陌生。我正在使用 Google Maps API 3.12 创建一个地图,其中将包含 600 个带有地址的条目的菜单,但这主要是 JavaScript 问题。每个地址都是可点击的(在菜单中),这将导致地图转到其各自的标记。或者,单击标记会将用户发送到菜单中的该位置。
我开始只是把每一个都写出来,但我很快意识到这将使我的代码超过 20,000 行,这既会减慢我的代码速度,也会让我感到痛苦。
这是一些初始代码:
function initialize() {
var map = new google.maps.Map(document.getElementById("map-canvas"), mapOptions);
var latlng1 = new google.maps.LatLng(41.88267,-87.623758); //etc for all 600 addresses
var marker1 = new google.maps.Marker({
position: latlng1,
map: map
}); //etc for all 600 markers
var contentString1 = '<div>blahblahblah</div>'; //gives content specific to place1.
var infowindow = new google.maps.InfoWindow();
}
以下是我想在线保存的地方。而不是复制和粘贴整个代码 600 次 for place
//marker
和contentString1
and 2
,3
直到600
,我试图找出一种方法为所有这些代码编写一次此函数:
google.maps.event.addDomListener(document.getElementById("place1"), "click", function() {
map.setCenter(marker1.getPosition());
map.setZoom(15);
infowindow.setContent(contentString1);
infowindow.open(map, marker1);
window.location = '#map-canvas';
});
这段代码使我可以单击菜单,地图将跳转到相应的标记并弹出一个信息窗口。它总是只是“单击placeX
,转到相应的markerX
内容”,但我很难找出通用的东西。latlngX
infowindow
可以像下面这样工作吗?我的理论是单击place
菜单中的任何一个都可以触发此功能,而不必单击特定的place
. 然后,这将提取place
所单击的特定的附加编号(我在下面调用该编号x
),并将其应用于下面的函数。如果我将place
元素从 ID 更改为类元素,这是否可行?我什至不知道该怎么做。这会反过来对我已有的代码产生不同的问题吗?
google.maps.event.addDomListener(document.getElementById("place"), "click", function (x) {
map.setCenter("marker" + x.getPosition());
map.setZoom(15);
infowindow.setContent("contentString" + x);
infowindow.open(map, "marker" + x);
window.location = '#map-canvas';
});
我已经尝试了几天的变化,但我无法得到任何工作。我不确定是理论、范围、语法还是以上所有问题。有任何想法吗?谢谢。