在 Google Maps API v3 中打开/关闭标记

发布于 2024-08-30 15:54:19 字数 282 浏览 2 评论 0原文

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

我相信这可能是我实现标记的方式有问题。

如果有人可以看一下并让我知道如果您发现有问题,我将不胜感激。

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

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

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.

LINK: http://www.dougglover.com/samples/UOITMap/v2/

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

ぺ禁宫浮华殁 2024-09-06 15:54:19

不要使用 setMap(null) 来切换地图上的标记!因此,API 提供了 setVisible 方法,什么是适合该任务的方法。

Do not use setMap(null) for toggling markers on a map! Therefore the API offers the setVisible method, what is the appropriate method for that task.

杀手六號 2024-09-06 15:54:19

基本问题是,如果您希望它起作用,您必须决定 markersTest 对象应该保存什么。您似乎无法决定 markersTest 中的元素应该是标记还是应该是告诉您标记将放置在何处的数组。

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

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 对象需要保存标记。

我的建议是:将 javascript 文件顶部设置的 markersTest 对象更改为 markerDestinations,并在 javascript 文件顶部添加 markersTest 初始化为:

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 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.

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  }

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.

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 = {};

Then, modify addTestMarkers to:

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
        });
    }
}

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文