我正在使用Google Maps v3,我需要为地图添加不同区域的边框线。例如,在Google地图中,所有美国国家/地区边界都会自动显示。我需要为不同的国家做同样的事情。例如,显示英格兰的所有城市边界。 我如何使用Google Maps API v3执行此操作?
此致 贝纳
答案 0 :(得分:6)
您可以使用Google地图中提供的KML support,通过查看KML Introduction了解详情,然后创建v3 KmlLayer。构成国家/地区,州和城市边界的Lat-Lng坐标不会在Google地图中提供开箱即用的功能,但可以使用一些支持数据:
这些数据中的大部分也可以公开用于动态检索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";
}