在Google地图的不同图层上显示标记集

Fai*_* Mq 3 google-maps markers layer

我需要在Google地图上显示一组标记.我知道标记可以直接添加到Google地图上,但考虑到我有3套标记,一套用于商店,一套用于公园,另一套用于酒店,我如何在3个不同的图层上显示它们以便稍后使用javascript ,我可以通过以下方式隐藏一组标记:

myLayer2.setMap(null);
Run Code Online (Sandbox Code Playgroud)

我已检查过Panoramio图层,但它需要先将图像上传到panoramio,但在我的情况下出于某些特殊的安全原因,我无法将它们上传到panoramio.我将在本地拥有图像,并根据某些标准在运行时设置它们.

有没有办法在不使用panoramio方法的情况下进行基于图层的工作?

Dr.*_*lle 8

Maps-API不支持这种自定义图层(因为您可能从其他map-API中了解它们,例如传单).

但要实现类似功能并不难.

你可以用一个google.maps.MVCObject.为每个"图层"创建此MVCObject的属性并将此属性的值设置为null或google.maps.Map-instance(取决于所需的"图层"初始状态)

var myLayers=new google.maps.MVCObject();
    myLayers.setValues({parks:null,shops:null,hotels:map});
    //hotels initially are visible
Run Code Online (Sandbox Code Playgroud)

当您想要将Overlay ...例如Marker添加到"layer"时,将该Overlay的map-property绑定到MVCObject的相关属​​性:

   parkMarker=new google.maps.Marker({/*options*/});
   parkMarker.bindTo('map',myLayers,'parks');
Run Code Online (Sandbox Code Playgroud)

要切换该"图层"中所有要素的显示,您只需要设置MVCObject的属性:

//show the parks
myLayers.set('parks',map);
//hide the hotels
myLayers.set('hotels',null);
Run Code Online (Sandbox Code Playgroud)

演示:http://jsfiddle.net/doktormolle/UA85N/