javascript for循环不起作用

时间:2018-06-18 06:14:37

标签: javascript

我有一些编码方面的经验,但我是Javascript的新手。

我尝试创建一个html文件,显示一个谷歌地图并在其上放置一些标记。

当我一次只使用一个标记时,它可以正常工作,如下所示:

function initMap() {
    var map = ...;
    var icon = ...;

    var pt1 = {lat: ..., lng: ...};
    var marker1 = new google.maps.Marker({
        position: pt1,
        map: map,
        icon: icon,
        label: {..., text: '1'},
        title: 'Marker 1'
    });

    var pt2 = {lat: ..., lng: ...};
    var marker2 = new google.maps.Marker({
        position: pt2,
        map: map,
        icon: icon,
        label: {..., text: '2'},
        title: 'Marker 2'
    });

    var pt3 = {lat: ..., lng: ...};
    var marker3 = new google.maps.Marker({
        position: pt3,
        map: map,
        icon: icon,
        label: {..., text: '3'},
        title: 'Marker 3'
    });
}

现在我尝试将标记的定义放在一个数组中,并在循环中创建标记,但我无法让它工作。

我试过这样:

var places = [
    {id: 1, lat: ..., lng: ..., title: 'Marker 1'},
    {id: 2, lat: ..., lng: ..., title: 'Marker 2'},
    {id: 3, lat: ..., lng: ..., title: 'Marker 3'}
]

function initMap() {
    var map = ...;
    var icon = ...;

    for(var i=0; i<places.length; i++) {
        var marker = new google.maps.Marker({
            position: {lat: places[i].lat, lng: places[i].lng},
            map: map,
            icon: icon,
            label: {..., text: ''+places[i].id},
            title: places[i].title
        });
    }
}

在循环中放置window.alert(places[i].title)会显示所有标题,因此数组的定义和循环的头部似乎没问题。但是当我尝试在循环中创建标记时,没有地图也没有显示标记,所以我猜必定会出现某种错误,但我无法弄明白。

你看到我做过任何语法错误吗?

1 个答案:

答案 0 :(得分:0)

你正在覆盖&#34;标记&#34;每次变量。

var marker = new google.maps.Marker({

您必须为标记创建一个数组,就像您为点(lat,long,tile)所做的那样。

应该是:

var places = [
    {id: 1, lat: ..., lng: ..., title: 'Marker 1'},
    {id: 2, lat: ..., lng: ..., title: 'Marker 2'},
    {id: 3, lat: ..., lng: ..., title: 'Marker 3'}
]

function initMap() {
    var map = ...;
    var icon = ...;
    var markers = [];

    for(var i=0; i<places.length; i++) {
        markers.push(new google.maps.Marker({
            position: {lat: places[i].lat, lng: places[i].lng},
            map: map,
            icon: icon,
            label: {..., text: ''+places[i].id},
            title: places[i].title
        }));
    }
}

你应该使用const作为数组(标记和位置)并让for循环。