如何使用Google地图显示国家/地区边界,美国州边界和城市边界?

时间:2012-05-01 11:51:41

标签: google-maps google-maps-api-3

我正在使用Google Maps v3,我需要为地图添加不同区域的边框线。例如,在Google地图中,所有美国国家/地区边界都会自动显示。我需要为不同的国家做同样的事情。例如,显示英格兰的所有城市边界。 我如何使用Google Maps API v3执行此操作?

此致 贝纳

3 个答案:

答案 0 :(得分:6)

您可以使用Google地图中提供的KML support,通过查看KML Introduction了解详情,然后创建v3 KmlLayer。构成国家/地区,州和城市边界的Lat-Lng坐标不会在Google地图中提供开箱即用的功能,但可以使用一些支持数据:

  1. 由Valery Hronusov创建的World Countries的KML
  2. 由Filipumme创建的World Capitals的KML
  3. US States的KML可从Google下载
  4. 可以获得一些额外的城市数据,但这通常是逐个城市的,需要在线搜索才能找到
  5. 这些数据中的大部分也可以公开用于动态检索Fusion Tables,但在这种情况下,您将使用共享公共数据。我使用KML进行此类事情,因为我希望拥有数据的内部副本,保持对数据的完全控制,并且能够进行自己的更改或更新。

答案 1 :(得分:1)

Google已开始以挑选颜色突出显示搜索区域。

它在API中不可用。

(可能会在未来推出.Google Maps的功能会迁移到API中,但Google不会提前发布公告)

您需要找到城市边界并通过叠加层自行绘制线条。

答案 2 :(得分:1)

我发现很难在互联网上找到边界/边界数据 - 即使是加拿大各省等着名的边界。尝试使用Google Maps Engine。在地图上绘制边框作为闭合多边形。然后单击文件夹并执行“导出到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";
}