【问题标题】:Interactive change of KML Polygons Style in Google mapsGoogle 地图中 KML 多边形样式的交互变化
【发布时间】:2016-04-06 08:54:44
【问题描述】:

我有一个代表德国邮政区域的 KML Plolygons 数据库。

我像这样初始化地图以显示多边形。

var map = new google.maps.Map(document.getElementById("map"), mapOptions);

var plzLayer = new google.maps.KmlLayer({
    url: 'http://xxxxx.de/index.php?option=com_map&task=kml.getplz&search=542',
    map: map
});

一切都像一个魅力。我什至可以通过在 kml 文件中定义样式来设置多边形的样式。

我的问题是;现在如何在地图上以交互方式更改多边形对象的样式。例如,我想要鼠标悬停效果或将多边形设置为鼠标点击标记。

据我所知,我可以添加一个点击事件。

plzLayer.addListener('click', function(kmlEvent) {
    console.log(this.objInfo);
});

事件对象包含一个名为 featureData 的列表,带有 infoWindowHtml 以及对象的 ID。 类似 id:"g37a571f194fd2a75"

如何在不重新加载的情况下访问多边形以动态更改样式?

【问题讨论】:

标签: javascript google-maps polygon kml


【解决方案1】:

您无法更改KmlLayer 显示的数据(至少目前如此)。如果您想在 KML 显示后更改其样式,一些选项是:

  1. 将其导入FusionTablesLayer(允许动态样式,但似乎与您当前的策略不兼容)
  2. 使用第三方 KML 解析器,如 geoxml3geoxml-v3,将 KML 显示为原生 Google Maps Javascript API v3 对象,可以设置样式

example using geoxml3 which changes polygon styles on mouseover

【讨论】:

    【解决方案2】:

    我在 google 世界之外找到了一个很好的解决方案。

    我正在使用开源 Lefleat Javascript 库 Lefleat 非常快速且易于使用,它将地理数据呈现为 OpenStreetMap 或 Google 地图上的 SVG 图层。 http://leafletjs.com/

    我决定使用 GeoJSON,因为它更短、更快。

    最后的工具。 http://www.unternehmen-selbstaendigkeit.de/148-der-online-gebietsmanager.html (德语)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-15
      • 2019-03-18
      • 2018-09-21
      • 1970-01-01
      • 2014-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多