在谷歌的Ajax API操場(http://code.google.com/apis/ajax/playground/?exp=maps#map_markers)提供了一個很好爲例隨機標記添加到任何地圖:如何將隨機標記添加到地圖,但避免海?
function initialize() {
if (GBrowserIsCompatible()) {
var map = new GMap2(document.getElementById("map_canvas"));
map.setCenter(new GLatLng(37.4419, -122.1419), 9);
// Add 10 markers to the map at random locations
var bounds = map.getBounds();
var southWest = bounds.getSouthWest();
var northEast = bounds.getNorthEast();
var lngSpan = northEast.lng() - southWest.lng();
var latSpan = northEast.lat() - southWest.lat();
for (var i = 0; i < 10; i++) {
var point = new GLatLng(southWest.lat() + latSpan * Math.random(),
southWest.lng() + lngSpan * Math.random());
map.addOverlay(new GMarker(point));
}
}
}
但如果你的經緯度是毗鄰大海(或者,如果你使用其他縮放級別比提供的爲例) ,你如何確保你的標記避免被放置在海中?有沒有一個標誌可以用來測試隨機點的潛在LatLng是在海里還是在陸地?
提前發送。
休伯特
感謝您的回答,但如果沒有比這更簡單的方法,我會感到驚訝嗎? LatLng上的某種「屬性」或函數返回一個布爾值(YES),如果在陸地上? 我在Google參考文獻(http://code.google.com/intl/fr-FR/apis/maps/documentation/reference.html)中搜索了「land」,「sea」等,但無法找到任何事......仍然在進一步尋找 – Hubert 2009-06-13 07:03:25
也許有,但因爲編寫谷歌地圖API的主要原因是在地圖上標記企業,所以我不得不說,基於高程隨機標記區域的概念可能超出了API功能的範圍。 在那個筆記上,可能有一種方法可以根據一個點來查詢標高,如果是的話,你的答案就在那裏。據我所知,海平面一般(但並非總是)非常接近「平均海平面」(所有海洋的平均高度)。如果你建立的位置低於「平均海平面」可能足夠好。 – SpliFF 2009-06-13 07:59:59