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

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

问题描述

我无法获取setMap(null);每个人似乎都建议工作的功能。



我认为这可能是我实现标记的一个问题。



如果有人可以看看,让我知道,如果你看到错误我非常感谢它。



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



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

解决方案

基本问题是,如果你想让这个工作你必须考虑到 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 //从地图中删除叠加层,但将它们保留在数组中
26 function clearOverlays(){
27 if(markersTest){
28 for(i in markersTest){
29 markersTest [i] .setMap(null);
30}
31}
32}

对于 addTestMarkers 可以工作, markersTest 对象需要保存标记应该在哪里的描述。对于 clearOverlays 来说, markersTest 对象需要保存标记。



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

  markersTest = {}; 

然后,将 addTestMarkers 修改为: p>

  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 对象中。


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.

解决方案

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.

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

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