Oto JSFiddle Demo:
Przypuszczam, że to jeden ze sposobów na zrobienie tego. Możesz użyć kręgu interfejsu API Map Google V3
aby utworzyć granice od punktu środkowego lub bieżącej lokalizacji. Możesz określić promień okręgu w metrach za pomocą setRadius(radius:number)
. Dzięki utworzonemu kręgowi możesz przechodzić przez swoje znaczniki i sprawdzać, czy znajdują się one w granicach kręgu, używając Obiekt getBounds okręgu, który jest LatLngBounds
i sprawdź, czy znacznik znajduje się w granicach, czy nie.
Poszedłem dalej i stworzyłem małe demo, które ma pięć punktów na mapie, a kiedy klikniesz przycisk tworzenia okręgu, pierwszy znacznik stanie się punktem środkowym i narysuje okrąg o promieniu 5000 i odfiltruje znaczniki, które nie są powiązane przy użyciu metody opisanej powyżej:
function createRadius(dist) {
var myCircle = new google.maps.Circle({
center: markerArray[markerArray.length - 1].getPosition(),
map: map,
radius: dist,
strokeColor: "#FF0000",
strokeOpacity: 0.8,
strokeWeight: 2,
fillColor: "#FF0000",
fillOpacity: 0.35
});
var myBounds = myCircle.getBounds();
//filters markers
for(var i=markerArray.length;i--;){
if(!myBounds.contains(markerArray[i].getPosition()))
markerArray[i].setMap(null);
}
map.setCenter(markerArray[markerArray.length - 1].getPosition());
map.setZoom(map.getZoom()+1);
}