在Google Maps API v3中切换开/关标记 [英] Toggling on/off Markers in Google Maps API v3
问题描述
我认为这可能是我实现标记的一个问题。
如果有人可以看看,让我知道,如果你看到错误我非常感谢它。
链接: 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 $ c $时,更改
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屋!