Google Maps在单击时获取标记图标URL



我需要在单击时获取标记图标URL,我在Google Maps文档上看到了function geticon(),但不知道在哪里称呼它。

  google.maps.event.addListener(layer, 'click', function (kmlEvent) {
                    alert(kmlEvent.getIcon());//Object #<Object> has no method 'getIcon'
                    showInContentWindow(map, kmlEvent);
                });

更新:

    var myOptions = {
        zoom: 8,
        center: null,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    var map = new google.maps.Map(document.getElementById("kmlMapCanvas"), myOptions);
    var layer = new google.maps.KmlLayer(
    'https://maps.google.co.uk/maps/ms?msid=207817312541605896974.0004cdbf70e9c541de0ac&msa=0&ll=51.499019,-0.58382&spn=0.070103,0.209255&output=kml',
    {                       
      suppressInfoWindows: true,
      map: map
    });
    google.maps.event.addListener(layer, 'click', function (kmlEvent) {
             alert(kmlEvent.getIcon());//Object #<Object> has no method
        showInContentWindow(map, kmlEvent);
    });

我在哪里失去与本机标记的联系..

如果使用kmllayer渲染kml,则无法访问图标。如果您使用第三方解析器,例如GeoxML3或Geoxml-V3,它使用本机Google Maps API V3标记呈现KML,则可以使用标记上的geticon()方法访问图标。

用geoxml3

显示的KML

图标的URL是:

geoXmlDoc.placemarks[0].marker.getIcon().url
geoXmlDoc.placemarks[1].marker.getIcon().url
geoXmlDoc.placemarks[2].marker.getIcon().url

这在该页面上起作用(在地址栏中,至少在IE中):

javascript:alert(geoXmlDoc.placemarks[0].marker.getIcon().url);

getIcon()google.maps.Marker的一种方法。placemarks(我想这是您单击的),被渲染为标记,但不是本机标记,因此没有方法geticon()您可以在这里使用。

MAPS-API内没有选项可以检索有关渲染标记的信息(PlaceMark)。

确保 kmlEvent是您的标记,因为 getIcon()是google.maps.marker.marker方法

根据您的评论

如何加载/获取本机标记

这就是您在地图上添加标记的方式

var marker = new google.maps.Marker({
    position: userLatLngvariable,
    title: 'Your title here',
    draggable: true,
    map: map
});

请参阅此处的工作示例:http://jsfiddle.net/rasg/va4eq/
(单击"添加标记"按钮)

最新更新