代码之家  ›  专栏  ›  技术社区  ›  Bill

动态更改链接的KML文件中多边形的颜色

  •  0
  • Bill  · 技术社区  · 11 年前

    我希望通过使用JavaScript的插件创建一个由覆盖在谷歌地球上的多边形组成的Choropleth地图。

    多边形存在于服务器上的KML文件中,所有这些文件都具有唯一的ID(不一定是我的)。 我希望能够动态更改多边形的颜色,以显示不同的数据集。

    这可行吗?

    我查找了KML机制,但它只适用于同一服务器上的文件。

    谢谢

    账单

    1 回复  |  直到 11 年前
        1
  •  2
  •   CodeMonkey    11 年前

    您可以通过 Google Earth API 从任何网络可访问的URL(相同的服务器或其他),然后迭代KML对象并以编程方式更改样式和多边形颜色。

    var href = 'http://code.google.com/'
               + 'apis/earth/documentation/samples/kml_example.kml';
    
    google.earth.fetchKml(ge, href, function(kmlObject) {
          if (kmlObject) {
             checkObject(kmlObject);
             // append KML objects to current view
             ge.getFeatures().appendChild(kmlObject);
          }    
    });
    
    function checkObject(kmlObject) {
        var type = kmlObject.getType();         
        if (type == 'KmlDocument' || type == 'KmlFolder') {
            var features = kmlObject.getFeatures();
            if (features.hasChildNodes()) {
                var children = features.getChildNodes();                    
                for (i=0; i < children.getLength(); i++) {
                    checkObject(children.item(i));                      
                }
            }
        } else if (type == 'KmlPlacemark') {
            // check/set style, change color, etc.
            // ...
        }
    }
    

    参考文献: https://developers.google.com/earth/documentation/kml#fetchkml_and_parsekml