1

如果我滥用任何技术术语,请原谅我;我对编程还是很陌生。我正在使用 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//markercontentString1and 23直到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内容”,但我很难找出通用的东西。latlngXinfowindow

可以像下面这样工作吗?我的理论是单击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';
});

我已经尝试了几天的变化,但我无法得到任何工作。我不确定是理论、范围、语法还是以上所有问题。有任何想法吗?谢谢。

4

0 回答 0