如何将随机标记添加到地图但避开大海?

Hub*_*ert 3 google-maps

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));
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

但是如果您的LatLng位于海边(或者如果您使用的是另一个Zoomlevel而不是提供的例子),您如何确保您的标记不会被放置在海上?是否有一个标志,我可以用它来测试随机点的潜在LatLng是在海里还是陆地?

提前Txs.

休伯特

Chr*_*s B 5

一种可能性是为您生成的每个点发送反向地理编码请求.水上点将返回"G_GEO_UNKNOWN_ADDRESS"(602)状态代码.但是,您需要彻底测试它以确保它能够正常工作.陆地上的一些地点可能会以未知方式返回.