0

我制作了一个谷歌地图,它在开头显示一个位置,并带有 1 个标记。从那里您可以切换位置。然后它将用 1 个标记显示新位置。

除了位置切换之外,还可以为 2 个主要位置中的每一个选择子位置。

我认为制作 2 个变量(对于每个位置 1)将是最好的事情 [示例]:

var locationsBerlin = [
    ['Berlin 1', 52.519433,13.406746, 1],
    ['Berlin 2', 52.522606,13.40366, 2],
    ['Berlin 3', 52.52113,13.409411, 3],
    ['Berlin 4', 52.517043,13.402394, 4],
    ['Berlin 5', 52.51703,13.412801, 5],
    ['Berlin 6', 52.525086,13.399798, 6],
    ['Berlin 7', 52.525151,13.410741, 7]
];

这就是我选择“主要”位置的方式。

markerMain = new google.maps.Marker({
        position: new google.maps.LatLng(locationsBerlin[0][1], locationsBerlin[0][2]),
        map: map,
        icon: customPin
    });

数组的其余部分是子位置。现在我希望用户能够按下链接并显示 var 中的其余位置(位置的数量将是动态的)。

所以我尝试制作一个在单击切换链接后将被调用的函数。

function subLocationBerlin(){
    alert("berlin sub");
    for (i = 1; i < locationsBerlin.length; i++) {
        marker = new google.maps.Marker({
            position: new google.maps.LatLng(locationsBerlin[i][1], locationsBerlin[i][2]),
            map: map
        });
        markers.push(marker);
    }
}

但现在我被困住了。出于某种原因,它没有在地图上添加额外的标记,我不知道出了什么问题。

在这里你可以找到小提琴:http: //jsfiddle.net/gvMSX/3/

4

1 回答 1

0

您的地图变量(已初始化并显示地图的变量)是初始化函数的本地变量:

var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);

从它前面删除“var”以初始化全局版本。

另请注意,javascript 数组是基于 0 的,当您在 for 循环中将 i 初始化为 1 时,您将丢失第一个标记

function subLocationBerlin(){
    console.log('Berlin Sub Called');
    for (i = 1; i < locationsBerlin.length; i++) {
        marker = new google.maps.Marker({
            position: new google.maps.LatLng(locationsBerlin[i][1], locationsBerlin[i][2]),
            map: map
        });
        markers.push(marker);
        console.log(marker);
    }
}
于 2013-07-11T19:38:57.523 回答