【问题标题】:google maps cant set multiple markers谷歌地图无法设置多个标记
【发布时间】:2016-03-16 20:53:01
【问题描述】:

我已经构建了一个 for 循环来测试一组位置,并在为真时将纬度/经度值发送到函数以创建标记。我的问题是标记移动,但没有制作额外的标记。我不清楚为什么会发生这种情况,因为我会认为,因为每次调用 addMarker 函数时我都会创建一个新的实例变量,所以我会在地图上获得另一个标记。任何帮助表示赞赏。谢谢。

function addMarker(x, y) {
    var myLatLng = {
        lat: parseFloat(x),
        lng: parseFloat(y)
    };
    console.log(myLatLng);
    var map = new google.maps.Map(document.getElementById("map"), {
        zoom: 6,
        center: myLatLng
    });
    var marker = new google.maps.Marker({
        position: myLatLng,
        map: map,
        title: 'hello world'
    });
    markers.push(marker);
    marker.setMap(map);
}

【问题讨论】:

    标签: javascript google-maps


    【解决方案1】:

    这是因为每个循环你都在这条线上创建了一个新地图:

    var map = new google.maps.Map(document.getElementById("map"),{
      zoom: 6,
      center: myLatLng
    });
    

    您需要声明一次,而不是每次循环:

    var neighborhoods = [
      {lat: 52.511, lng: 13.447},
      {lat: 52.549, lng: 13.422},
      {lat: 52.497, lng: 13.396},
      {lat: 52.517, lng: 13.394}
    ];
    
    var markers = [];
    var map;
    
    function initMap() {
      map = new google.maps.Map(document.getElementById('map'), {
        zoom: 12,
        center: {lat: 52.520, lng: 13.410}
      });
    }
    
    function addMarkers() {
      for (var i = 0; i < neighborhoods.length; i++) {
        markers.push(new google.maps.Marker({
          position: neighborhoods[i]
          map: map,
          animation: google.maps.Animation.DROP
        }));
      }
    }
    

    【讨论】:

    • 谢谢,知道为什么我会收到消息: InvalidValueError: setMap: not an instance of Map;而不是 StreetViewPanorama 的一个实例。没关系,我在初始化中定义了“地图”。非常感谢,答案/解释真的很有帮助。
    猜你喜欢
    • 1970-01-01
    • 2019-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-22
    • 2018-04-06
    • 2013-11-08
    • 2016-04-08
    相关资源
    最近更新 更多