谷歌地图上的GeoJSON上的测地线

时间:2014-11-13 18:52:29

标签: javascript google-maps geojson

我正在为Google地图编写一个GeoJson图层,它使用不同类型的功能,动态设置样式。

我无法找到将LineStrings绘制为测地线的方法。

我必须为Google Maps API发出功能请求,否则我会遗漏某些内容?

3 个答案:

答案 0 :(得分:2)

它没有实现(目前),但它将是一个理想的功能。

解决方法是隐藏要素并改为创建自定义折线:

      map.data.addListener('addfeature', function(e) {
        //when it's a Line
        if(e.feature.getGeometry().getType()==='LineString'){
          //hide the feature
          map.data.overrideStyle(e.feature, {visible: false});
          //add a polyline
          new google.maps.Polyline({path    : e.feature.getGeometry().getArray(),
                                    map     : this.getMap(),
                                    geodesic: true});
        }
      });

这是一个简单的例子,当然你还需要应用样式和&事件处理程序

答案 1 :(得分:1)

现在可以将线串设置为测地线。

map.data.setStyle(function(feature) {
  return {
    geodesic: true
  };
}

答案 2 :(得分:0)

在@ Dr.Molle的回答中,我使用google.map.data.forEach()作为替代。

myMapInstance.map.data.addGeoJson(jsonData);
myMapInstance.map.data.forEach(function(feature) {
    if(feature.getGeometry().getType() === 'LineString') {
        myMapInstance.map.data.overrideStyle(feature, {visible: false});
        new google.maps.Polyline({
            path: feature.getGeometry().getArray(),
            map: myMapInstance.map,
            geodesic: true
        });
    }
});