javascript - 谷歌地图控制按钮

标签 javascript google-maps button click

http://jsfiddle.net/9hYv4/1

我正在尝试控制我的 map 的标签 - 即开启和关闭。

我似乎无法让它工作。参见上面的 fiddle 。

我已经定义了调用函数的按钮,以及显示或不显示标签的函数。

部分代码如下: 脚本:

// Removes the markers from the map, but keeps them in the array.
function clearMarkers() {
    setAllMap(null);
}

// Shows any markers currently in the array.
function showMarkers() {
    setAllMap(map);
}

HTML:

<div id="panel">
    <input onclick="clearMarkers();" checked="checked" type="checkbox" value="Hide Markers"><label>Hide Markers</label>
    <input onclick="showMarkers();" type="button" value="Show All Markers">
</div>

编辑

请看这里: http://jsfiddle.net/9hYv4/10/

我不知道我在想什么。我所追求的是一个切换隐藏/显示图标的复选框。因此,选中时图标会显示,取消选中时图标会隐藏。

fiddle 和 jsbin 中的代码运行良好,但是从我发布的 fiddle 中可以看出,图标分组 (markerCluster) 不再有效。

点击 fiddle 并缩小查看。这些图标应该聚集在一起。

我希望这是清楚的?

我真的很感谢到目前为止的帮助 :) 我真的很感谢花时间来帮助我。

总结一下:我在使用复选框按钮隐藏/显示图标切换之后。并恢复集群功能。

非常感谢你:)

最佳答案

您的代码有一些错误。一个与不可见的变量连接,应设置为全局变量:

var map,
    markers = [];

下一个与checkbox连接。显示/隐藏序列与复选框和按钮状态的组合有关(有时复选框未选中并且标记被隐藏)。最好对复选框值使用react。查看新函数 handleMarkers:

function handleMarkers() {
    if (cBox.checked) {
        clearMarkers();
    } else {
        showMarkers();
    }
}

<input onclick="handleMarkers();" id='cBox' checked="checked" type="checkbox" value="Hide Markers"><label>Hide Markers</label>

并且标记会在更改缩放时再次显示。它与 MarkerClusteres 相连。必须添加新的事件监听器:

map.fitBounds(bounds);

google.maps.event.addListener(map, 'zoom_changed', function() {
    console.log('zoom changed!');
    if (cBox.checked) {
        markerCluster.clearMarkers();
    } else {
        markerCluster = new MarkerClusterer(map, markers, clusterOptions);
    }
})

查看更新 example at jsbin : 更改了 clearMarkers()showMarkers() 函数来处理标记簇。

更新:这个version at jsBin不会创建新的标记聚类器对象,而只是从现有对象中清除/添加标记。应该是更好的选择。

缩放更改事件处理程序:仅当 markerCluster 为空时才恢复标记:

google.maps.event.addListener(map, 'zoom_changed', function() {
    console.log('zoom changed!');
    if (cBox.checked) {
        markerCluster.clearMarkers();
    } else {
        var totArray = markerCluster.getTotalMarkers();
        if (totArray == 0) {
            markerCluster.addMarkers(markers);
        }
        //markerCluster = new MarkerClusterer(map, markers, clusterOptions);
    }
})

关于javascript - 谷歌地图控制按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21779260/

相关文章:

javascript - Angular JS - 切换输入值

JavaScript Google Maps API 如何将位置经/纬度存储到全局变量

JavaFX 在窗口右上角添加一个按钮

javascript - 根据提交后生成的值显示特定的div

javascript - Rxjs ReplaySubject 在发出之前用 'null' 值初始化 - Angular 7

android - 将 SupportMapFragment 添加到 LinearLayout

android - 停止使用谷歌地图 fragment 的位置

android - 使用 Intent 通过按钮将微调器对象传递给新 Activity

javascript - 如何使用 TinyMCE 和 Internet Explorer 8 解决 "Object required"错误消息

javascript - 如何在主 div 中的每个新段落上制作一个编辑按钮。 JavaScript