2009-06-13 5 views
3

GoogleのAjaxのAPIの遊び場(http://code.google.com/apis/ajax/playground/?exp=maps#map_markers)は任意のマップにランダムなマーカーを追加するにはすてきなexempleを提供します。ランダムなマーカーを地図に追加するにはどうすればよいですか?海は避けてください。

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)); 
    } 
    } 
} 

しかし、あなたの緯度経度は、海に隣接している場合(またはあなたが提供exempleよりも、別のZoomlevelを使用する場合)あなたのマーカーが海上に置かれないようにするにはどうしますか?ランダムポイントの潜在的LatLngが海または土地にあるかどうかをテストするために使用できるフラグはありますか?

Txsです。

Hubert

答えて

5

生成するポイントごとにreverse geocode requestを送信する可能性があります。水上のポイントは「G_GEO_UNKNOWN_ADDRESS」(602)ステータスコードを返します。しかし、それが動作することを確認するために、完全にテストする必要があります。土地上のいくつかの場所が未知として返される可能性があります。

+0

それは素晴らしいです。 Txs。 – Hubert

1

Google Earth APIについてはわかりませんが、これは別の方法で実現できます。 Nasaの青い大理石bathymetryをダウンロードし、海域のビットマップを作成します。これらの座標をlong/latにマップすると、google maps apiと組み合わせて使うことができる海と湖をテストする方法があります。

+0

回答ありがとうございますが、これより簡単な方法がない場合は驚かれるでしょうか?土地上にある場合は、LatLngの一種の「プロパティ」または関数がブール値(YES)を返します。 私はGoogleのリファレンス(http://code.google.com/intl/fr-FR/apis/maps/documentation/reference.html)で "land" "sea"などを検索しましたが、見つかりませんでした何か...まださらに検索しています。 – Hubert

+0

Google Maps APIを書く主な理由は、地図上の企業をマークすることなので、標高に基づいてランダムにタグを付けるという概念は、APIの機能の範囲外である可能性があります。 ポイントに基づいて標高を照会する方法があるかもしれませんが、その場合は回答がそこにあります。私が知る限り、海面は「平均海水面」(すべての海洋の平均高さ)にかなり近い(しかし必ずしもそうではない)。あなたが場所を確立する場合は、十分に良いかもしれない "平均海水面"よりも低いです。 – SpliFF

+0

と "十分に良い"とは、あなたの目的を意味します。海面下のすべての土地が海で実際に浸水しているという事実ではありません。 – SpliFF

0

私はC#プログラムを作成して、ユーザーの入力を行きたい場所で受け取り、それに基づいて、仕様に一致するランダムな場所を指し示します。

http://maps.google.com/maps/geo?q=29,-55」は、そのページが土地にあるかどうかを判断するために使用するウェブページです。ページの結果の特定の「精度:0」文字列を見てください。それが精度0の場合、それは海にあります。それが1以上であれば、それは土地にある。