Когда я нажимаю на карту, какой способ лучше всего найти ближайший маркер или маркеры? Есть ли в API некоторые функции, которые помогут мне в этом?
это google map api v3.
google-maps
google-maps-api-3
user198003
источник
источник
Ответы:
Сначала вам нужно добавить прослушиватель событий
Затем создайте функцию, которая перебирает массив маркеров и использует формулу гаверсинуса для вычисления расстояния каждого маркера от щелчка.
Это отслеживает ближайшие маркеры и предупреждает его заголовок.
У меня есть маркеры в виде массива на моем объекте карты
источник
Вы можете использовать метод computeDistanceBetween () в пространстве имен google.maps.geometry.spherical .
источник
Я хотел бы расширить предложение Леора для всех, кто не понимает, как вычислить ближайшее местоположение и фактически предоставить рабочее решение:
Я использую маркеры в
markers
массиве, напримерvar markers = [];
.Тогда давайте представим нашу позицию примерно так:
var location = new google.maps.LatLng(51.99, -0.74);
Затем мы просто уменьшаем наши маркеры относительно того места, которое у нас есть:
Выскакивает ближайший к вам
LatLng
объект- маркер .источник
Приведенная выше формула не сработала для меня, но я использовал ее без проблем. Передайте свое текущее местоположение функции и переберите в цикле массив маркеров, чтобы найти ближайший:
источник
markers
массив? Это путем создания маркера с помощьюvar marker1 = new google.maps.Marker({ ... })
?map.markers = map.markers || [];
затем для каждого маркераmap.markers.push(marker);
Вы знаете о расширениях Mysql Spatial ?
Вы можете использовать что-то вроде MBRContains (g1, g2) .
источник
Вот еще одна функция, которая отлично мне подходит, возвращает расстояние в километрах:
источник
Используйте метод computeDistanceBetween () API карты Google для вычисления ближайшего маркера между вашим местоположением и списком маркеров на карте Google.
Шаги: -
Создать маркер на карте Google.
function addMarker(location) { var marker = new google.maps.Marker({ title: 'User added marker', icon: { path: google.maps.SymbolPath.BACKWARD_CLOSED_ARROW, scale: 5 }, position: location, map: map }); }
Щелкнув мышью, создайте событие для получения широты и долготы вашего местоположения и передайте его в find_closest_marker ().
перейдите по этой ссылке, следуйте инструкциям. Вы сможете приблизить маркер к вашему местоположению.
источник