我正在尝试在我正在处理的示例地图应用程序中更改KML叠加层的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叠加层地标。上面的代码不起作用。
答案 0 :(得分:2)
我目前正在做同样的事情,在我的情况下,我可以直接编辑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>
目前Google地图不支持scale
参数。在这里,您可以在Google地图中查看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>
现在,您的所有地标都应显示自定义图标。
希望它有所帮助。
编辑:抱歉,我没有看到点击部分。这不是你需要的。我会留下它,以防它帮助别人。对不起。