【问题标题】:How can I display country borders, US state borders, and city borders using Google Maps?如何使用 Google 地图显示国家边界、美国州边界和城市边界?
【发布时间】:2012-05-01 11:51:41
【问题描述】:

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

问候, 尤西

【问题讨论】:

  • 您到底想达到什么目的?你需要添加什么样的行? “分裂”一个州或一个城市是什么意思?如果我们无法弄清楚您想要实现的目标,我们将无法帮助您。
  • 如果我在美国地图上查看它是根据不同的州划分的,例如犹他州、内华达州、波特兰州,每个州都是扭曲的线(边界)。我想达到相同的结果,但是对于国家,例如我想划分英格兰的所有城市,所以我有两个问题:1.我如何向国家的不同城市添加线路,以便每个城市都有边界 2 . 如何使用 API3 找到一个国家的所有城市?

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


【解决方案1】:

您可以使用 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. 提供了一些额外的城市数据,但通常是逐个城市的,需要在线搜索才能找到

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

【讨论】:

    【解决方案2】:

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

    它在 API 中不可用。

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

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

    【讨论】:

      【解决方案3】:

      我发现很难在 Internet 上找到边界/边界数据 - 即使是加拿大各省等知名边界。尝试使用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";
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-09-17
        • 1970-01-01
        • 1970-01-01
        • 2019-12-23
        • 2014-05-15
        • 1970-01-01
        • 1970-01-01
        • 2023-01-30
        相关资源
        最近更新 更多