我使用方法
加载了多边形map.data.loadGeoJson('geo.json',{ idPropertyName: 'ID' });
现在我想制作一个从geojson多边形加载的可编辑的。
我受到了审判:
map.data.getFeatureById(1).setProperty('editable', true);
但似乎data.feature没有可编辑的属性?
如何以最简单的方式制作它? 我现在只有一个想法是从geoJson创建自己的解析器并将所有形状绘制为google.maps.Polygon()。
答案 0 :(得分:8)
我认为这是最简单的方法:
map.data.overrideStyle(map.data.getFeatureById(1), { editable: true });
答案 1 :(得分:5)
也许这不是最佳解决方案,但现在对我有用。 我正在从要素中复制形状几何并创建新的多边形。
var shape = [];
for (var i = 0; i < map.data.getFeatureById(ID).getGeometry().getLength(); i++) {
var shapeData = map.data.getFeatureById(ID).getGeometry().getAt(i).getArray();
shape.push(shapeData);
}
nowEditingShape = new google.maps.Polygon({
paths: shape,
strokeColor: '#FF0000',
strokeOpacity: 0.8,
strokeWeight: 2,
fillColor: '#FF0000',
fillOpacity: 0.35,
editable: true
});
map.data.remove(map.data.getFeatureById(ID));
nowEditingShape.setMap(map);
答案 2 :(得分:3)
此工具的部件代码 https://google-developers.appspot.com/maps/documentation/utils/geojson/
// Initialise the map.
map = new google.maps.Map(document.getElementById('map-holder'), {
center: {lat: 0, lng: 0},
zoom: 3
});
map.data.setControls(['Point', 'LineString', 'Polygon']);
map.data.setStyle({
editable: true,
draggable: true
});
完整的编辑器代码:https://google-developers.appspot.com/maps/documentation/utils/geojson/editor.js
答案 3 :(得分:-2)
google.maps.event.addListener(nowEditingShape, 'mouseover', function(event) {
this.setEditable(true);
});