我正在使用 Google Maps v3,我需要为我的地图添加不同区域的边界线。例如,在 Google 地图中,所有美国州界都会自动显示。我需要为不同的国家做同样的事情。例如,显示英格兰的所有城市边界。我如何使用 Google Maps API v3 做到这一点?
问候, 约西
我正在使用 Google Maps v3,我需要为我的地图添加不同区域的边界线。例如,在 Google 地图中,所有美国州界都会自动显示。我需要为不同的国家做同样的事情。例如,显示英格兰的所有城市边界。我如何使用 Google Maps API v3 做到这一点?
问候, 约西
您可以使用 Google 地图中提供的KML 支持,通过查看KML 简介了解更多信息,然后创建 v3 KmlLayer。构成国家、州和城市边界的 Lat-Lng 坐标在 Google 地图中未开箱即用,但提供了一些支持数据:
这些数据中的大部分也可作为Fusion Tables公开用于动态检索,但在这种情况下,您将使用共享的公共数据。我将 KML 用于此类事情,因为我希望拥有数据的内部副本,保持对数据的完全控制,并能够进行自己的更改或更新。
谷歌已经开始用挑选颜色突出显示搜索区域。
它在 API 中不可用。
(将来可能会提供。Google Maps 的功能确实会迁移到 API 中,但 Google 不会提前发布公告)
您需要通过叠加找到城市边界并自己画线。
我发现很难在互联网上找到边界/边界数据——即使是像加拿大省份这样的知名边界。尝试使用谷歌地图引擎。在地图上将边界绘制为封闭的多边形。接下来单击文件夹并执行“导出到 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";
}