Мне нужно переместить положение объекта на карте, перетащив его на карту.

При использовании картографического сервера я могу это сделать, но не могу реализовать это на своей HTML-карте. Не удалось найти ничего связанного с этим в документации или поискать вопросы.

Благодарность

2
Bruno Tabosa 7 Ноя 2018 в 15:47

1 ответ

Лучший ответ

Предположим, что ваши функции - это графические объекты.

  1. Добавить на карту прослушиватель событий mousedown
  2. На карте mousedown проверьте, пересекается ли объект с кругом с центром в позиции mousedown (здесь вам нужно будет преобразовать пиксель в единицы карты);
  3. Если объект пересекается, добавьте карту mousemove и прослушиватель событий mouseup.
  4. На карте mousemove измените геометрию объекта с помощью положения курсора (это будет легко для точечного объекта, но более сложно для полилинии и многоугольника). Также вы должны использовать функцию устранения ошибок или дросселирования для этого прослушивателя событий. для предотвращения чрезмерных расчетов.

  5. На карте mouseup удалите обработчики событий mousemove и mouseup.

Чтобы рассчитать радиус круга, вам нужно принять во внимание текущий экстент карты. Вот как можно рассчитать радиус:

function getSearchAtPointRadius(mapView) {
    //20m if your map units are in meters
    return 20 * (mapView.extent.xmax - mapView.extent.xmin) / mapView.width
}
0
Below the Radar 7 Ноя 2018 в 13:11