在Google Maps API V3中点击更改KML地标图标

时间:2010-10-07 18:36:39

标签: google-maps-api-3 kml

我正在尝试在我正在处理的示例地图应用程序中更改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叠加层地标。上面的代码不起作用。

1 个答案:

答案 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>

现在,您的所有地标都应显示自定义图标。

希望它有所帮助。

编辑:抱歉,我没有看到点击部分。这不是你需要的。我会留下它,以防它帮助别人。对不起。