回答
只是遍歷所有你必須標記並使用以下函數獲取標記從具體座標的距離:computeDistanceBetween()
:
要計算這個距離,可以呼叫computeDistanceBetween(),它傳遞 兩個LatLng對象。
我發現它是here。然後過濾掉所有足夠接近的標記。
見給這個問題的答案:Google Maps Api v3 - find nearest markers
你基本上需要通過你的標記陣列循環,並用一個公式來從給定的點計算出它們的距離(圓心代表你的搜索半徑)。
然後,您可以排除這比半徑更遠的任何標記,你將留下哪些是圈子裏面的標記列表廣告。
裝入geometry library和使用computeDistanceBetween()
從您的中心點找到的每個標記的距離。
如果距離爲半徑內,顯示標記。
var targetLat=marker.getPosition().lat();
var targetLng=marker.getPosition().lng();
var targetLoc = new GLatLng(targetLat,targetLng);
var center= new GLatLng(centerLat, centerLng);
var distanceInkm=center.distanceFrom(targetLoc)/1000;
if(distanceInkm < radius){
// To add the marker to the map, call setMap();
marker.setMap(map);
}
'GLatLng'在V3中不推薦使用,現在叫做'google.maps.LatLng'現在 – Faloude 2017-10-11 14:12:21
這是一個工作示例。點擊地圖繪製與選定的半徑的半徑,它會顯示所有從all_locations
示例陣列落入半徑內的標記物。點擊標記以查看距半徑中心的距離(以米爲單位)。 (點擊某處在紐約的二街看到的例子標記 - 地圖已經集中到那個位置)
var map = null;
var radius_circle = null;
var markers_on_map = [];
//all_locations is just a sample, you will probably load those from database
var all_locations = [
\t {type: "Restaurant", name: "Restaurant 1", lat: 40.723080, lng: -73.984340},
\t {type: "School", name: "School 1", lat: 40.724705, lng: -73.986611},
\t {type: "School", name: "School 2", lat: 40.724165, lng: -73.983883},
\t {type: "Restaurant", name: "Restaurant 2", lat: 40.721819, lng: -73.991358},
\t {type: "School", name: "School 3", lat: 40.732056, lng: -73.998683}
];
//initialize map on document ready
$(document).ready(function(){
var latlng = new google.maps.LatLng(40.723080, -73.984340); //you can use any location as center on map startup
var myOptions = {
zoom: 14,
center: latlng,
mapTypeControl: true,
mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DROPDOWN_MENU},
navigationControl: true,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
\t
\t google.maps.event.addListener(map, 'click', showCloseLocations);
});
function showCloseLocations(e) {
\t var i;
\t var radius_km = $('#radius_km').val();
\t var address = $('#address').val();
\t //remove all radii and markers from map before displaying new ones
\t if (radius_circle) {
\t \t radius_circle.setMap(null);
\t \t radius_circle = null;
\t }
\t for (i = 0; i < markers_on_map.length; i++) {
\t \t if (markers_on_map[i]) {
\t \t \t markers_on_map[i].setMap(null);
\t \t \t markers_on_map[i] = null;
\t \t }
\t }
\t
\t var address_lat_lng = e.latLng;
\t radius_circle = new google.maps.Circle({
\t \t center: address_lat_lng,
\t \t radius: radius_km * 1000,
\t \t clickable: false,
\t \t map: map
\t });
\t if(radius_circle) map.fitBounds(radius_circle.getBounds());
\t for (var j = 0; j < all_locations.length; j++) {
\t \t (function (location) {
\t \t \t var marker_lat_lng = new google.maps.LatLng(location.lat, location.lng);
\t \t \t var distance_from_location = google.maps.geometry.spherical.computeDistanceBetween(address_lat_lng, marker_lat_lng); //distance in meters between your location and the marker
\t \t \t if (distance_from_location <= radius_km * 1000) {
\t \t \t \t var new_marker = new google.maps.Marker({
\t \t \t \t \t position: marker_lat_lng,
\t \t \t \t \t map: map,
\t \t \t \t \t title: location.name
\t \t \t \t });
\t \t \t \t google.maps.event.addListener(new_marker, 'click', function() {
\t \t \t \t \t alert(location.name + " is " + distance_from_location + " meters from my location");
\t \t \t \t });
\t \t \t \t markers_on_map.push(new_marker);
\t \t \t }
\t \t })(all_locations[j]);
\t }
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load("maps", "3",{other_params:"sensor=false&libraries=geometry"});
</script>
<body style="margin:0px; padding:0px;" >
<select id="radius_km">
\t <option value=1>1km</option>
\t <option value=2>2km</option>
\t <option value=5>5km</option>
\t <option value=30>30km</option>
</select>
<div id="map_canvas" style="width:500px; height:300px;">
</body>
嗨,代碼片段不再適用 – aaa 2017-08-11 06:15:02
@ChingChongPa它適用於Firefox。它取決於瀏覽器設置等,因爲它從https頁面加載http腳本。在你的本地主機上試用它,應該在任何瀏覽器中工作。如果您收到'沒有API密鑰'錯誤,則可以嘗試加載Google Maps JS api,如下所述:https://developers.google.com/maps/documentation/javascript/tutorial,而不是google.load(「從示例中映射「..」。 – 2017-08-11 14:06:32
- 1. 查找給出一個二維座標系我怎麼能找到的所有點整數在半徑從給定的點的座標給定半徑
- 2. 找到指定的角度和半徑
- 3. 在給定角度和半徑的圓上找到點
- 4. 找到一個圓的半徑,直徑,面積和圓周
- 5. 尋找圍繞指定的點的給定半徑
- 6. 計算半徑,並找到半徑內的所有匹配表
- 7. 找到一個點的原點,角度和半徑的位置
- 8. 找到另一點的某個半徑內的所有點
- 9. 檢索給定位置的半徑?
- 10. 查找半徑和給定兩點的圓心
- 11. 在Android中查找給定半徑內的附近位置
- 12. 查找與給定的中心點,半徑和程度
- 13. 如何用DBSCAN找到一個簇的半徑
- 14. 給定一個曲面,找到被曲面切成一半的零件
- 15. 上一個半徑和下一個半徑
- 16. C#Web應用程序從給定的郵政編碼找到半徑
- 17. 算法找到給定的電弧,其中心,半徑和角度3分
- 18. 難以找到圓的半徑
- 19. 定義「整數乘法」給定一個半羣半羣
- 20. 找到一個峯的半峯全寬
- 21. 找到一個給定的字符串
- 22. HTML - 找到一個給定的標籤
- 23. 找到一個給定的CSV行
- 24. 得到給定半徑內的所有標記在SQL
- 25. 如何使用3個給定點計算arcTo()的半徑?
- 26. 如何找到一個給定的「路徑字符串的一部分」用C#
- 27. searchkick在位置半徑找到
- 28. 查找給定路徑的根路徑
- 29. 在給定路徑找不到文件
- 30. 確定一個座標是否在另一個的半徑內
是的,這工作很多感謝! – 2012-04-24 15:28:55