Как изменить положение объекта на карте, перетаскивая? - PullRequest
0 голосов
/ 07 ноября 2018

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

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

Спасибо

1 Ответ

0 голосов
/ 07 ноября 2018

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

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

  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
}
...