4

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

问候, 约西

4

3 回答 3

7

您可以使用 Google 地图中提供的KML 支持,通过查看KML 简介了解更多信息,然后创建 v3 KmlLayer。构成国家、州和城市边界的 Lat-Lng 坐标在 Google 地图中未开箱即用,但提供了一些支持数据:

  1. Valery Hronusov 创建的世界国家KML
  2. Filipumme 创建的世界首都的 KML
  3. 美国各州的KML可从 Google 下载
  4. 一些额外的城市数据是可用的,但这通常是逐个城市的,需要在线搜索才能找到

这些数据中的大部分也可作为Fusion Tables公开用于动态检索,但在这种情况下,您将使用共享的公共数据。我将 KML 用于此类事情,因为我希望拥有数据的内部副本,保持对数据的完全控制,并能够进行自己的更改或更新。

于 2012-05-02T13:01:44.567 回答
1

谷歌已经开始用挑选颜色突出显示搜索区域。

它在 API 中不可用。

(将来可能会提供。Google Maps 的功能确实会迁移到 API 中,但 Google 不会提前发布公告)

您需要通过叠加找到城市边界并自己画线。

于 2013-07-05T06:41:04.457 回答
1

我发现很难在互联网上找到边界/边界数据——即使是像加拿大省份这样的知名边界。尝试使用谷歌地图引擎。在地图上将边界绘制为封闭的多边形。接下来单击文件夹并执行“导出到 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";
}
于 2013-09-10T19:28:32.887 回答