在Google Maps API上重新加载标记

弗雷德

这是我的代码(来自Google API页面的大多数代码)。

<script>
    var beaches = [
      ['Bondi Beach', -12.890542, 120.274856, 4],
      ['Coogee Beach', -12.923036, 520.259052, 5],
      ['Cronulla Beach', -12.028249, 1221.157507, 3],
      ['Manly Beach', -12.80010128657071, 1121.28747820854187, 2],
      ['Maroubra Beach', -33.950198, 121.259302, 1]
    ];

    function setMarkers(map, locations) {
      for (var i = 0; i < locations.length; i++) {
        var beach = locations[i];
        var myLatLng = new google.maps.LatLng(beach[1], beach[2]);
        var marker = new google.maps.Marker({
            position: myLatLng,
            map: map,
            title: beach[0],
            zIndex: beach[3]
        });
      }
    }

    function initialize() {
      var mapOptions = {
        zoom: 3,
        center: new google.maps.LatLng(38.77417, -9.13417),
        mapTypeId: google.maps.MapTypeId.SATELLITE
      }
      var map = new google.maps.Map(document.getElementById('map-canvas'),
                                    mapOptions);

      setMarkers(map, beaches);
    }

    google.maps.event.addDomListener(window, 'load', initialize);

    setInterval(function() { setMarkers(map, beaches); }, 5000);

</script>

我只想做的就是仅重新加载标记。我尝试使用初始化函数重新加载地图,但没有成功。然后我尝试使用setMarkers函数重新加载,仍然没有运气...

谢谢你的帮助。

先生先生

您应该做的几件事/与原始代码相比我已经改变的事情:

  1. 为标记使用有效的纬度/经度坐标(例如,1121.28747820854187不是有效的经度)
  2. 为地图创建全局变量(更易于在脚本中引用)
  3. 创建一个数组来保存您的标记
  4. 我在标记中添加了标记动画animation: google.maps.Animation.DROP,,以便可以看到它们何时被重新加载,以及一个重新加载标记按钮来调用重新加载功能。

基本上,您想做的是:

  1. setMarkers函数中创建每个标记
  2. 将每个标记推入markers数组
  3. 重装你的标记,遍历您的标记阵列,并呼吁setMap(null)每个标记从地图上删除
  4. 完成后,setMarkers再次致电以重新绘制标记

更新的代码:

var map;
var markers = []; // Create a marker array to hold your markers
var beaches = [
    ['Bondi Beach', 10, 10, 4],
    ['Coogee Beach', 10, 11, 5],
    ['Cronulla Beach', 10, 12, 3],
    ['Manly Beach', 10, 13, 2],
    ['Maroubra Beach', 10, 14, 1]
];

function setMarkers(locations) {

    for (var i = 0; i < locations.length; i++) {
        var beach = locations[i];
        var myLatLng = new google.maps.LatLng(beach[1], beach[2]);
        var marker = new google.maps.Marker({
            position: myLatLng,
            map: map,
            animation: google.maps.Animation.DROP,
            title: beach[0],
            zIndex: beach[3]
        });

        // Push marker to markers array
        markers.push(marker);
    }
}

function reloadMarkers() {

    // Loop through markers and set map to null for each
    for (var i=0; i<markers.length; i++) {

        markers[i].setMap(null);
    }

    // Reset the markers array
    markers = [];

    // Call set markers to re-add markers
    setMarkers(beaches);
}

function initialize() {

    var mapOptions = {
        zoom: 5,
        center: new google.maps.LatLng(10,12),
        mapTypeId: google.maps.MapTypeId.SATELLITE
    }

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

    setMarkers(beaches);

    // Bind event listener on button to reload markers
    document.getElementById('reloadMarkers').addEventListener('click', reloadMarkers);
}

initialize();

工作示例:

JSFiddle demo

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Google Maps API上重新加载标记

来自分类Dev

Google Maps API:动态加载标记

来自分类Dev

Google Maps API标记刷新

来自分类Dev

群组标记-Google Maps API

来自分类Dev

如何以角度重新加载视图。Google Maps API

来自分类Dev

异步加载Google Maps API

来自分类Dev

动态加载Google Maps API

来自分类Dev

动态加载Google Maps API

来自分类Dev

Google Maps API上的绑定标记取自JSON

来自分类Dev

如何在Google Maps API上的标记周围添加圆圈

来自分类Dev

在点击的Google Maps JavaScript API上放置标记

来自分类Dev

如何在Google Maps API上的标记周围添加圆圈

来自分类Dev

Google Maps刷新标记

来自分类Dev

Google Maps标记动作

来自分类Dev

筛选标记Google Maps

来自分类Dev

Google Maps Api按钮以“转到标记” /转到Google Maps

来自分类Dev

数组列表中Google Maps上的标记

来自分类Dev

数组列表中Google Maps上的标记

来自分类Dev

等待加载标记时在Google Maps上叠加加载图像

来自分类Dev

使用Google Maps API进行标记的说明

来自分类Dev

使用Google Maps API的位置标记问题

来自分类Dev

使用Google Maps API查找最近的标记

来自分类Dev

使用Google Maps API显示标记

来自分类Dev

Google Maps API-标记未显示

来自分类Dev

Google Maps API标记无法正常工作

来自分类Dev

Google Maps API标记内容默认隐藏

来自分类Dev

Google Maps API:未显示标记

来自分类Dev

Google Maps API - 弹跳标记问题 2

来自分类Dev

Google Maps API 不再显示路线或标记