在 Google Maps API v3 中打开/关闭标记 [英] Toggling on/off Markers in Google Maps API v3

查看:39
本文介绍了在 Google Maps API v3 中打开/关闭标记的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在获取 setMap(null) 时遇到问题;每个人似乎都推荐使用的功能.

I'm having trouble getting the setMap(null); function that everyone seems to be recommending to work.

我认为这可能是我实施标记的方式有问题.

I believe it may be a problem with the way I've implemented the markers.

如果有人能看一下并告诉我您是否发现有问题,我将不胜感激.

If someone could take a look and let me know if you see something wrong I'd greatly appreciate it.

链接:http://www.dougglover.com/samples/UOITMap/v2/

请注意:上面的旧链接,不会去任何地方.

Please Note: Old link above, doesn't go anywhere.

推荐答案

基本的问题是,如果你想让它工作,你必须决定 markersTest 对象是什么应该持有.您似乎无法决定 markersTest 中的元素应该是标记还是应该是告诉您标记将被放置在哪里的数组.

The basic problem is that if you want this to work you've got to make up your mind about what the markersTest object is supposed to hold. You can't seem to decide whether the elements in markersTest should be markers or should be arrays that tell you about where markers are going to be placed.

引用您的 javascript 文件,以下是您选中/清除复选框时执行的两个函数:

Quoting from your javascript file, here are the two functions that get executed when you check/clear the checkbox:

15  function addTestMarkers(){
16      for(var i in markersTest) {
17          var location = new google.maps.LatLng(markersTest[i][1], markersTest[i][2]);
18          marker = new google.maps.Marker({
19              position: location,
20              map: map
21          });
22      }
23  }
24  
25  // Removes the overlays from the map, but keeps them in the array
26  function clearOverlays() {
27      if (markersTest) {
28          for (i in markersTest) {
29              markersTest[i].setMap(null);
30          }
31      }
32  }

要使 addTestMarkers 工作,markersTest 对象需要保存标记应该去哪里的描述.要使 clearOverlays 工作,markersTest 对象需要保存标记.

For addTestMarkers to work, the markersTest object needs to hold descriptions of where the markers should go. For clearOverlays to work, the markersTest object needs to hold markers.

这是我的建议:将 markersTest 对象在 javascript 文件的顶部设置为 markerDestinations,并且在 javascript 文件的顶部有 markersTest 初始化为:

Here's my suggestion: change the markersTest object as you set it up at the top of the javascript file to markerDestinations, and at the top of the javascript file have markersTest initialized with:

markersTest = {};

然后,将addTestMarkers修改为:

function addTestMarkers() {
    for(var i in markerDestinations) {
        var location = new google.maps.LatLng(markersDestinations[i][1], markersDestinations[i][2]);
        markersTest[i] = new google.maps.Marker({
            position: location,
            map: map
        });
    }
}

关键的变化是让 addTestMarkers 实际上把标记放入 markersTest 对象中.

The key change is to make addTestMarkers actually put the markers into the markersTest object.

这篇关于在 Google Maps API v3 中打开/关闭标记的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆