2015-11-16 4 views
-1

У меня на карте имеется от 4 до 5 тысяч маркеров. Я хочу, чтобы пользователь разрешил рисовать многоугольник на карте, а затем удалять те маркеры, которые находятся в затененном полигоне. Может ли кто-нибудь посоветовать мне узнать, какие маркеры находятся в затененной области полигона?API Google Map: маркер в отмеченном полигоне

ответ

1

Во-первых, вам необходимо использовать geometry library. Append libraries=geometry в строке запроса URL, который используется для загрузки API Карт:

<script src="https://maps.googleapis.com/maps/api/js?libraries=geometry"></script> 

Затем вы можете использовать функцию containsLocation, чтобы проверить, если каждый маркер находится внутри многоугольника.

for (var i = 0; i < markers.length; i++) { 
    if (google.maps.geometry.poly.containsLocation(markers[i].getPosition(), yourPolygon)) { 
     markers[i].setMap(null); 
    } 
} 

Я предполагаю, что здесь у вас есть эти 5k маркеры в массиве с именем markers. И, удалив эти маркеры, вы просто хотите удалить их из представления. Возможно, вы захотите также отключить запрос ajax и/или удалить их из этого массива маркеров.

+0

Спасибо за быстрый ответ. На самом деле я хотел захватить остальные маркеры, чтобы пользователь удалил маркеры для данного пользователя, так что в следующий раз, когда он загрузит карту, он не сможет увидеть ранее удаленные маркеры. – Ashish

+0

Зарегистрированы ли ваши пользователи, поэтому вы сохраняете эти маркеры на стороне сервера в отношении их профиля? Или использовать хранилище на стороне клиента, такое как cookie или [Window.localStorage] (https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage)? – duncan

+0

Я хочу сохранить их на стороне @server. И я должен разрешить пользователю рисовать один за другим многоугольник и удалять маркеры в затененной области многоугольника. Предполагаете ли вы, что вместо удаления их с клиентской стороны отправьте нарисованные координаты многоугольника на сегмент и пометьте их как удаленные для этого пользователя и отправьте остальные маркеры. Не будет ли потребитель слишком тратить трафик клиент-сервер? – Ashish