我一直试图解决这个问题一个星期,但还没有找到任何解决方案。
我发现的所有标记都是由自己放置的标记可以更改。
我的情况是我导入了一个带有标记的KML文件,我想更改click事件上的图标。 下面的代码工作正常
var ctaLayer = new google.maps.KmlLayer({
//KMZ KML
url: url,
map: map,
suppressInfoWindows: true,
});
ctaLayer.addListener('click', function (kmlEvent) {
var text = kmlEvent.featureData.description;
showInContentWindow(text); }
大多数人使用以下功能设置不同的图标
marker.seticon(ICON)
但在我的情况下,我无法获得我点击的标记
希望有人可以帮助我!!
答案 0 :(得分:1)
使用KmlLayer,您无法在加载后更改样式(使用当前记录的API)。一种选择是使用第三方KML解析器(如geoxml3或geoxml_v3)将KML转换为可以更改的本机谷歌地图api对象。
geoxml3: https://github.com/geocodezip/geoxml3
geoxml_v3: http://code.google.com/p/geoxml-v3/
答案 1 :(得分:1)
根据geocodezip的建议
我出来了这个解决方案
var marker;
google.maps.event.addListener(ctaLayer, 'click', function (event) {
var eLatLng = event.latLng;
if (marker != null) //this will remove the previous marker
{
marker.setMap(null);
}
marker = new google.maps.Marker({
position: eLatLng,
map: map,
});
marker.setPosition((eLatLng));
marker.setIcon(ICON);
});
点击kmlLayer标记时,我在其上覆盖了一个新的更大的标记。
我知道它不是最好的解决方案,但至少它会告诉用户他们现在点击哪个标记。