【问题标题】:Why are my markers not redisplaying after resetting the Google map?为什么重置谷歌地图后我的标记没有重新显示?
【发布时间】:2013-12-12 20:15:09
【问题描述】:

我允许用户重置/重新居中地图。我发布了关于它here.

我添加了应该可以根据他们选择的复选框重新加载标记的代码。

为了让您了解我在说什么,下面是网站首次显示时的屏幕截图:

如果我从下拉列表中选择不同的视图(任何州或美国 50 岁以上),然后我可以选择一个或多个复选框并且它/它们将起作用,但我的代码应该根据哪些复选框重新绘制标记已经点击了没有。

这里是从下拉列表中选择地图作为项目的代码:

$('#stateSelector').on("change",function() {
    var $this = $(this).val();
    if ($this == "USA (48)")
    {
        LoadUSA48();
    }
    else if ($this == "USA (50+)")
    {
        LoadUSA50();
    }
    else if ($this == "Alabama")
    {
        LoadAlabama();
    }
    . . .
    else if ($this == "Wyoming")
    {
        LoadWyoming();
    }
});

这是一个示例 Load() 方法:

function LoadAlabama() {
    $("#map").removeData();
    $("#map").goMap({ 
        latitude: 32.806673, 
        longitude: -86.791133, 
        zoom: 8 
    }); 
}

有一个 ReloadMarkers() 方法在 select 事件结束时被调用:

function ReloadMarkers() {
    if ($('#NFLCheckbox').is(':checked')) {
        ShowNFLMarkers();
    }

    . . .

    if ($('#AmMusiciansCheckbox').is(':checked')) {
        ShowMusiciansMarkers();
    }
}

ShowX() 方法包含以下所有适当类型的代码:

$.goMap.createMarker({
    address: 'Green Bay, Wisconsin',
    title: 'Green Bay Packers',
    group: 'NFLGroup',
    icon: constants.nflIcon,
    html: getPackers()
});

就好像复选框的选中状态没有被识别...

【问题讨论】:

    标签: jquery jquery-ui google-maps google-maps-markers


    【解决方案1】:

    因为在您的 LoadAlabama() 函数中,地图正在重新初始化。标记与旧地图对象相关联。当您从下拉列表中更改选项时,新地图对象没有与之关联的任何标记。因此,showHide 不起作用(因为地图上还没有标记)。

    最好的解决方案是将地点的经纬度值存储在我猜你已经在做的对象或数组中。而当你重新初始化地图时,你需要对标记进行迭代,并为需要显示的标记设置地图。像这样的

    function setMapForMarkers (mapMarkers) {
        $(mapMarkers).each(function(i, elm) {
            elm.setMap(myMap);
        });
    }
    
    function ReloadMarkers() {
        if ($('#NFLCheckbox').is(':checked')) {
             setMapForMarkers(NFLGroupMarkers);    //NFL Group markers should be an array containing the markers that need to be displayed.
        } else {
             //whatever set of markers you want to display here
        }
    
    }
    

    您可以参考这个以获取工作示例 https://developers.google.com/maps/documentation/javascript/examples/marker-remove

    【讨论】:

    • 有趣;我在该页面上没有看到任何标记;并且捣碎“显示所有标记”按钮也不会放置任何...
    • 您需要先点击地图放下标记。在那之后,其他一切都会起作用。
    猜你喜欢
    • 2016-08-31
    • 1970-01-01
    • 2020-02-19
    • 2014-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多