Google Maps v3を使用していますが、地図にさまざまなエリアの境界線を追加する必要があります。たとえば、Googleマップでは、すべての米国の州の境界線が自動的に表示されます。私はさまざまな国で同じことをする必要があります。たとえば、イギリスのすべての都市の境界を表示します。Google Maps API v3でこれを行うにはどうすればよいですか?
よろしく、ヨッシ
Google Maps v3を使用していますが、地図にさまざまなエリアの境界線を追加する必要があります。たとえば、Googleマップでは、すべての米国の州の境界線が自動的に表示されます。私はさまざまな国で同じことをする必要があります。たとえば、イギリスのすべての都市の境界を表示します。Google Maps API v3でこれを行うにはどうすればよいですか?
よろしく、ヨッシ
Googleマップで提供されているKMLサポートを使用し、 KMLの概要を確認して詳細を確認してから、 v3KmlLayerを作成できます。国、州、および都市の境界を構成するLat-Lng座標は、Googleマップですぐに提供されるわけではありませんが、いくつかのサポートデータが利用可能です。
このデータの多くは、 Fusion Tablesとして動的検索に公開されていますが、その場合は、共有された公開データを使用します。この種のことにはKMLを使用します。これは、データの内部コピーを作成し、データを完全に制御し、独自の変更や更新を行うことができるようにするためです。
Googleは、検索領域をピックカラーで強調表示し始めました。
APIでは使用できません。
(将来的に利用可能になる可能性があります。Googleマップの機能はAPIに移行されますが、Googleは事前に発表しません)
オーバーレイを使用して、都市の境界を見つけ、自分で線を引く必要があります。
カナダの州のような有名な境界線であっても、インターネット上で境界線/境界線のデータを見つけるのは難しいと感じました。GoogleMapsEngineを使用してみてください。マップ上に閉じたポリゴンとして境界線を描画します。次にフォルダをクリックして、「KMLにエクスポート」を実行します。形式は、長く、緯度が高く、高度(複数のポイントがある)です。これは他のフォーマットに簡単に変換できます。
たとえば、単純な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";
}