Как добавить параметры по умолчанию для маркеров

Я хочу добавить другой значок к маркерам, которые создаются, когда я нажимаю элемент управления рисованием маркеров. (Пакет response-google-maps)

Я попытался добавить опору markerOptions в компонент DrawingManager, но, похоже, это не работает так, как работает polygonOptions.

<GoogleMap defaultZoom={13} defaultCenter={{ lat: 38.022871, lng: 23.790431 }}>
        <DrawingManager
          ref={props.onDrawingManagerMounted}
          defaultDrawingMode={this.state.currentDrawingMode}
          defaultOptions={{
            drawingControl: true,
            drawingControlOptions: {
              position: google.maps.ControlPosition.TOP_CENTER,
              drawingModes: [
                google.maps.drawing.OverlayType.POLYGON,
                google.maps.drawing.OverlayType.MARKER
              ]
            },
            polygonOptions: this.colorOptions(),
            markerOptions: {
              icon: {
                url: require("../../../assets/images/helipadIcon.png"),
                anchor: new google.maps.Point(5, 58)
              }
            }
          }}

person Giannoulo    schedule 28.08.2019    source источник
comment
После некоторого тестирования я обнаружил, что markerOptions действительно работает, и проблема заключалась в том, что, когда я отображал маркеры, я не тянул их значок, чтобы использовать. Я решил это с помощью свойства icon = {this.markerArray [i] .getIcon ()} для каждого компонента маркера.   -  person Giannoulo    schedule 28.08.2019


Ответы (1)


Совет: назовите пакет, который вы используете, прежде чем задавать свой вопрос. Мне потребовалось время, чтобы найти пакет response-google-maps на npm.

Ознакомьтесь с официальной документацией указанного пакета: https://tomchentw.github.io/react-google-maps/

Вы обнаружите, что компонент DrawingManager не предлагает опоры с именем markerOptions или polygonOptions. Вместо этого используйте компонент Marker (https://tomchentw.github.io/react-google-maps/#marker), который предлагает свойство icon типа any.

<Marker icon={} .../>

Если вы хотите изменить / отредактировать маркеры, нарисованные с помощью DrawingManager, вы можете использовать функцию обратного вызова onMarkerComplete, которая вернет объект marker. Вы можете использовать объект-маркер для изменения значка. См. https://developers.google.com/maps/documentation/javascript/reference/drawing#DrawingManager.markercomplete

const icon = {
   url: require("../../../assets/images/helipadIcon.png"),
   anchor: new google.maps.Point(5, 58)
};
const onMarkerComplete = (marker) => {
   marker.setIcon(icon);
}

return (
<DrawingManager onMarkerComplete={onMarkerComplete} ...>
...
</DrawingManager>
);
person Andre    schedule 28.08.2019
comment
Вы правы, я забыл добавить это в текст только в теги ниже. Дело в том, что в документации polygonOptions тоже не упоминается, но они работают. Также есть круг вариантов и т. Д. - person Giannoulo; 28.08.2019
comment
Значок работает в компоненте маркера, который я пробовал, но я хочу изменить значки маркеров, которые будут созданы, нажав кнопку. Итак, я нажимаю кнопку, затем устанавливаю в состояние выбранный значок, а затем устанавливаю его как маркер значка по умолчанию в диспетчере рисования. Я имею в виду, что если я добавлю компонент маркера в компонент диспетчера чертежей, который будет отображать только этот маркер, верно? Я хочу, чтобы вновь созданные маркеры отображались с другим значком - person Giannoulo; 28.08.2019