如何使用Google Maps显示国家边界、美国州边界和城市边界?

4

我正在使用Google Maps v3,并且我需要为地图添加不同区域的边框线。例如,在Google Maps中自动显示所有美国州界线。我需要为不同的国家做同样的事情。例如,显示英格兰所有城市的边界。

请问如何在Google Maps API v3中实现这一功能?

谢谢, Yossi


你到底想要实现什么?你需要添加哪种类型的行?"分割"一个州或城市是什么意思?如果我们无法弄清楚你想要实现什么,我们就无法帮助你。 - Sean Mickey
如果我查看美国地图,它会按不同的州划分,例如犹他州、内华达州、波特兰市,每个州都用线条(边框)包裹。我想要实现相同的结果,但是针对整个国家,例如我想将英国所有城市划分,因此我有两个问题:
  1. 我如何为国家的不同城市添加线条,以便每个城市都有一个边框?
  2. 我如何使用API3找到一个国家中的所有城市?
- user1365697
3个回答

7
你可以使用Google Maps提供的KML支持,通过查看KML介绍来了解更多信息,然后创建v3 KmlLayer。Google Maps默认情况下不提供组成国家、州和城市边界的经纬度坐标,但是有一些支持数据可用:
  1. Valery Hronusov创建的世界国家KML
  2. Filipumme创建的世界首都KML
  3. 可以从Google下载美国各州KML
  4. 还有一些额外的城市数据可用,但这通常是逐个城市的,并需要在线搜索才能找到
这些数据中的大部分也可作为Fusion Tables进行动态检索,但在这种情况下,你将使用共享公共数据。我使用KML来处理这种类型的数据,因为我想要内部副本、完全控制数据,并具有自己更改或更新的能力。

1
谷歌已经开始用醒目的颜色突出搜索区域。
API中不可用。
(将来可能会提供。Google Maps的功能会迁移到API中,但Google不会提前公布)
您需要找到城市边界并通过叠加层自行绘制线条。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接