Google 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位于海边(或者如果您使用的是另一个Zoomlevel而不是提供的示例),您如何确保您的标记避免被放置在海上?是否有一个标志,我可以用它来测试随机点的潜在LatLng是在海里还是陆地?
提前Txs。
休伯特
答案 0 :(得分:5)
一种可能性是为您生成的每个点发送reverse geocode request。水上点将返回“G_GEO_UNKNOWN_ADDRESS”(602)状态代码。但是,您需要彻底测试它以确保它能够正常工作。陆地上的一些地点可能会被归还为未知。
答案 1 :(得分:2)
我不了解Google Earth API,但您可以通过另一种方式实现这一目标。下载美国国家航空航天局蓝色大理石bathymetry地图并创建海域位图。然后将这些坐标映射到long / lat,您就可以测试海洋和湖泊,可以与google maps api一起使用。
答案 2 :(得分:0)
我正在创建一个C#程序,它将用户输入视为他们想去的地方,然后根据它,将它们指向一个符合其规格的随机位置。
“http://maps.google.com/maps/geo?q=29,-55”是我将用于确定它是否在陆地上的网页。请查看页面结果的特定“准确度:0”字符串。如果它的准确度为0那么它就在海洋中。如果它是1或更高,则它在陆地上。