在Google Maps API V3中单击更改KML地标图标
我正在尝试更改我正在处理的示例地图应用程序中KML叠加层的KML地标图标。在Google Maps API V3中单击更改KML地标图标
这里的示例代码 -
function seekml() {
var myLatlng = new google.maps.LatLng(40.65, -73.95);
var myOptions = {
zoom: 14,
mapTypeControl: true,
center: myLatlng,
mapTypeControlOptions: {
style: google.maps.MapTypeControlStyle.DROPDOWN_MENU,
position: google.maps.ControlPosition.TOP_RIGHT
},
navigationControl: true,
navigationControlOptions: {
style: google.maps.NavigationControlStyle.SMALL
},
mapTypeId: google.maps.MapTypeId.ROADMAP
};
url_end = "?nocache=" + (new Date()).valueOf(); //For No KML Caching
myKML = "http://kmlscribe.googlepages.com/SamplesInMaps.kml" + url_end
gMap = new google.maps.Map(document.getElementById("map"), myOptions);
var ctaLayer = new google.maps.KmlLayer(myKML,{suppressInfoWindows: true});
ctaLayer.setMap(gMap);
google.maps.event.addListener(ctaLayer, 'click', function(event) {
this.setIcon(gYellowIcon);
});
}
gYellowIcon已经在我的代码之前被定义 -
var gYellowIcon = new google.maps.MarkerImage(
"image url",
new google.maps.Size(31, 31),
new google.maps.Point(0, 0),
new google.maps.Point(6, 20));
我想改变KML覆盖地标,当用户点击任何地标显示在KML叠加层上。上面的代码不起作用。
我目前正在研究完全相同的事情,在我的情况下,我可以直接编辑KML文件。如果你有机会获得它,并可以对其进行编辑,这是我做的:
1)右键下<document>
标签,贴这样的事情:
<Style id="desired_id">
<IconStyle>
<Icon>
<href>http://www.yourwebsite.com/your_preferred_icon.png</href>
<scale>1.0</scale>
</Icon>
</IconStyle>
</Style>
的scale
参数没有在谷歌地图的支持时刻。在这里,您可以查看KML的所有受支持的元素在谷歌地图:
http://code.google.com/intl/en-EN/apis/kml/documentation/kmlelementsinmaps.html
在这里,你已经得到了有关KML和GMaps之间的兼容性的一些信息:
http://code.google.com/intl/en-EN/apis/kml/documentation/mapsSupport.html
2)一旦你已经定义了你的风格,你可以在每个地标项上加上以下内容来参考它:
<styleUrl>#desired_id</styleUrl>
现在,您的所有地标都应显示显示您的自定义图标。
希望它有帮助。
编辑:对不起,我没有看到点击部分。这不是你当时需要的。我会离开它以防别人帮助别人。对不起。
谢谢,这很有帮助。 – 2011-07-27 17:00:03
我正要问相同的... – Francesco 2010-11-17 21:51:08
嗨,你最终找到了解决这个问题的解决方案?谢谢 – 2011-02-03 16:41:50