我正在为Google地图编写一个GeoJson图层,它使用不同类型的功能,动态设置样式。
我无法找到将LineStrings
绘制为测地线的方法。
我必须为Google Maps API发出功能请求,否则我会遗漏某些内容?
答案 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
});
}
});