Google maps 当图层通过kml文件导入时,如何更改google地图上的图标?

Google maps 当图层通过kml文件导入时,如何更改google地图上的图标?,google-maps,google-maps-api-3,google-maps-markers,Google Maps,Google Maps Api 3,Google Maps Markers,我已经试着解决这个问题一个星期了,但还没有找到任何解决办法 我所发现的只是一个自己放置的标记,它是可以改变的 我的情况是我导入了一个带有一些标记的KML文件,我想在单击事件时更改图标。 下面的代码工作正常 var ctaLayer = new google.maps.KmlLayer({ //KMZ KML url: url, map: map, suppressInfoWindows: tr

我已经试着解决这个问题一个星期了,但还没有找到任何解决办法

我所发现的只是一个自己放置的标记,它是可以改变的

我的情况是我导入了一个带有一些标记的KML文件,我想在单击事件时更改图标。 下面的代码工作正常

    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)
但在我的情况下,我无法得到我点击的标记

希望有人能帮助我

在加载当前记录的API后,无法更改样式。一种选择是使用第三方KML解析器,如geoxml3或geoxml_v3,将KML转换为本地google maps api对象,您可以更改这些对象

geoxml3:

geoxml_v3:
根据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标记时,我会在其上覆盖一个更大的新标记


我知道这不是最好的解决方案,但至少它会告诉用户他们现在正在单击哪个标记。

您能添加更多详细信息吗?你尝试了什么,对你来说有什么困难?你应该修改你的代码,让每个人都能轻松地帮助你。或者在你的问题中插入代码片段,看看这会对你有帮助。所以如果不使用第三方KML解析器,我无法解决这个问题??KML层不是很动态,您可以根据单击事件加载不同的KML文件,或者在KML中的文件上方放置一个标记。您可以使用数据使标记的位置更准确,如果需要,还可以添加一个信息窗口。我将信息窗口的内容放在a中的左侧,但仍然感谢您的建议。