2012-05-01 23 views
2

私はGoogle Maps v3を使用しています。異なる領域の境界線をマップに追加する必要があります。たとえば、Googleマップでは、すべての米国国境が自動的に表示されます。私は同じ国でも同じことをする必要があります。たとえば、すべての都市の境界線をイングランドに表示します。 Google Maps API v3でこれをどのように行うことができますか?Googleマップを使用して、国境、米国の州境、都市の境界線を表示するにはどうすればよいですか?

よろしく、 ヨッシ

+0

正確に達成しようとしていることは何ですか?どのような行を追加する必要がありますか?州や都市を「分割する」とはどういう意味ですか?あなたが達成しようとしていることを理解できない場合、私たちはあなたを助けることはできません。 –

+0

私はそれが別の州、例えば、Utha、Nevada、Portlandで分割されているUSA地図を見れば、それぞれの州はラインの歪み(国境)です。私は同じ結果を達成したいと思いますが、例えば国の場合、私はイギリスのすべての都市を分けたので、私はこのために2つの質問を持っています: 1.国ごとに異なる都市に行を追加して各都市に国境 2. API3のある国のすべての都市をどのように見つけることができますか? – user1365697

答えて

6

あなたは、Googleマップで提供されてKML supportを使うKML Introductionを見直すことで、よりを学び、その後、V3 KmlLayerを作成することができます。緯度経度国を構成する座標、状態、および都市の境界はGoogleマップでアウトオブボックス提供するが、データをサポートしているの一部が提供されていますされていません。

  1. 作成したとしてWorld CountriesのKML
  2. Filipumme
  3. によって作成されたよう World CapitalsのKML
  4. ヴァレリーHronusov氏によって US StatesのKMLは、いくつかの追加の都市のデータが利用可能であるが、それは多くの場合、都市ごとの都市であり、オンライン検索を必要とするGoogleの
  5. からダウンロードできます。検索するには

このデータの多くは、動的検索のために公開されているFusion Tablesでも公開されていますが、その場合は共有の公開データが使用されます。このタイプのものにはKMLを使用しています。これは、データの内部コピーを保持し、データを完全に制御し、自分の変更や更新を行うことができるためです。

1

Googleは、検索エリアをピックカラーで強調表示し始めました。

APIでは使用できません。

(これは、Googleマップの機能がAPIに移行します。将来的に利用できるかもしれないが、Googleは事前に告知をしない)

あなたは都市の境界を見つけて、ラインを自分で描画する必要があります、オーバーレイを介して。

1

カナダの州のようなよく知られた境界の場合でも、インターネット上の境界/境界データを見つけることは困難でした。 Google Maps Engineを試してみてください。境界線を閉じたポリゴンとしてマップに描画します。次に、フォルダをクリックして「KMLに書き出す」を実行します。書式はlong、lat、altitude(複数の点を含む)です。これは簡単に他の形式に変換することができます。

たとえば、単純なperlスクリプトを使用して、私が望む形式にKMLを変換しました。

while (<>) { 
chop; 
if (/<name>/) { 
    s/<name>//g; 
    s/<\/name>//g; 
    s/^\s+//; # strip whitespace 
    s/\s+$//; # strip whitespace 
    print "<state colour=\"red\" name=\"$_\">\n"; 
} 
if (/<coordinates/) { 
    s/<coordinates>//; 
    s/<\/coordinates>//; 
    s/,0.0\s*/,/g; 
    @array = split(","); 
    for ($i = 0; $i < @array; $i = $i + 2) { 
     if ($array[$i+1] && $array[$i]) { 
       $array[$i+1] =~ s/^\s+//; # strip whitespace 
       $array[$i+1] =~ s/\s+$//; # strip whitespace 
       $array[$i] =~ s/^\s+//; # strip whitespace 
       $array[$i] =~ s/\s+$//; # strip whitespace 
       print "<point lat=\"" . $array[$i+1] . "\" lng=\"" . $array[$i] . "\" \/>\n"; 

     } 
    } 
     print "</state>\n"; 
} 
関連する問題