Предположим, ваши функции - это графические объекты.
- Добавление прослушивателя событий mousedown на карту
- На карте mousedown, проверьте, пересекается ли объект с окружностью, центрированной в позиции mousedown (вам придется конвертировать пиксель в единицу измерения карты здесь);
- Если объект пересекается, добавьте перемещение мыши на карте и прослушиватель событий mouseup
При перемещении мыши по карте измените геометрию объекта с помощью положения курсора (это будет легко для точечного объекта, но сложнее для полилинии и многоугольника). Кроме того, вы должны использовать функцию debounce или throttle для этого прослушивателя событий для предотвращения перерасчетов.
На карте mouseup удалите mousemove и обработчики событий mouseup
Чтобы рассчитать радиус круга, вам нужно будет учитывать текущий экстент карты. Вот как вы можете рассчитать радиус:
function getSearchAtPointRadius(mapView) {
//20m if your map units are in meters
return 20 * (mapView.extent.xmax - mapView.extent.xmin) / mapView.width
}