突出或加粗kml多边形的边界

时间:2014-03-12 22:56:16

标签: kml google-earth google-earth-plugin

嘿嘿将kml文件加载到谷歌地球后我试图让用户点击kml中的某个多边形时突出显示该多边形。

到目前为止,我可以记录click事件,获取事件类型(KmlPlacemark)并获取其kml标记。 我尝试做类似于这个example的事情,他们在kmlObject的getFeatures上添加了一个地标,但目标和类型似乎都没有“getFeatures'”。在查看文档之后,我想我可能想要来自Kml Polystyle类的setOutline或来自KmlLineStyle类的setWidth(),但我不确定。当我尝试像target.setOutline(true);它没有用。

任何人都可以告诉我,我是否走在正确的轨道上,暗示我做错了什么,以及是否有更好的方法来做到这一点?

function recordEvent(event) {
            var target = event.getTarget();
            var type = target.getType();


            if(type == "KmlPolygon") {
                alert("KMLPolygon ");
            }else if(type == "KmlPlacemark") {
                // // get the data you want from the target.
                var description = target.getDescription();
                var balloon = target.getBalloonHtml();
                var outputKml = target.getKml();

                if ('getFeatures' in event) {
                    console.log("test");
                    event.getFeatures().appendChild(placemark);
                }

                console.log("hello?")
                // target.setOutline(true);
                console.log(outputKml);
            }
        };

      google.earth.addEventListener(ge.getGlobe(), 'click', recordEvent);

谢谢!

1 个答案:

答案 0 :(得分:0)

我发现你要做的最好的方法是:

  1. 检测您当前所做的点击事件

  2. 如果单击,则创建一个新样式,然后将其指定给目标

    var newStyle = ge.createStyle('');
    // Assign your Style's attributes such as LabelStyle and IconStyle
    // eg to set the scale of your label
    newStyle.getLabelStyle().setScale(2.5);
    // Set the Style
    target.setStyleSelector(newStyle);
    
  3. 编辑以添加Google示例的此链接,以更深入地展示它 https://code.google.com/apis/ajax/playground/#styling_placemarks_using_style_maps