Google maps v3 data.feature Доступно для редактирования?

У меня есть многоугольники, загруженные с использованием метода

map.data.loadGeoJson('geo.json',{ idPropertyName: 'ID' });

Теперь я хочу сделать редактируемым один из полигонов, загруженных из geojson.

Меня судили:

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

Но кажется, что у data.feature нет редактируемого свойства?

Любые идеи, как сделать это самым простым способом? Единственная идея, которая у меня есть на данный момент, — сделать свой собственный парсер из geoJson и рисовать все фигуры как google.maps.Polygon().


person seek    schedule 28.04.2014    source источник
comment
Я нашел решение. Может быть, это не лучший, но на данный момент он решает мою проблему.   -  person seek    schedule 29.04.2014
comment
Вы пробовали map.data.getFeatureById(1).setStyle({editable: true})?   -  person Ja͢ck    schedule 01.08.2015


Ответы (4)


Я думаю, что это самый простой способ сделать это:

map.data.overrideStyle(map.data.getFeatureById(1), { editable: true });
person Rui Silva    schedule 18.10.2016
comment
Красиво и просто. - person D.Rosado; 07.01.2020

Возможно, это не лучшее решение, но теперь оно работает для меня. Я дублирую геометрию фигуры из объекта и создаю новый полигон на месте.

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);
person seek    schedule 29.04.2014

Код части этого инструмента 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

person Dmitry Karyakin    schedule 23.11.2016

person    schedule
comment
Вы прочитали мой вопрос? Ваше решение не устанавливает редактируемое свойство для data.feature - person seek; 29.04.2014