谷歌地图v3 data.feature可编辑?

时间:2014-04-28 13:38:01

标签: google-maps-api-3 geojson

我使用方法

加载了多边形
map.data.loadGeoJson('geo.json',{ idPropertyName: 'ID' });

现在我想制作一个从geojson多边形加载的可编辑的。

我受到了审判:

map.data.getFeatureById(1).setProperty('editable', true);

但似乎data.feature没有可编辑的属性?

如何以最简单的方式制作它? 我现在只有一个想法是从geoJson创建自己的解析器并将所有形状绘制为google.maps.Polygon()。

4 个答案:

答案 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);
});