36

我正在构建一个 Web 应用程序,该应用程序将根据按钮和点击事件在 Google 地图上动态突出显示某些美国州和加拿大省份。

计划 A) 多边形

我的主要想法是绘制多边形。为此,我需要所有州和省轮廓(顺时针或逆时针)的坐标列表(纬度 + 经度)。在政府网站上,我发现了各种不同的格式(即 E00),但我无法将这些格式转换为简单的坐标列表,以便在地图上创建标记或多边形。你有什么提示在哪里获得这些坐标吗?

B计划)叠加

AFAIK,如果您在 Google 地图上使用叠加层,它们会随着您进一步放大而变得像素化(或者您可以叠加 SVG?)在我的情况下,在最坏的情况下(所有州和所有省份)我需要 50 + 11 个叠加层。谷歌地图仍然可以做到这一点,还是会变得异常缓慢?

我有点吃惊,没有一种直接的方式来突出显示州或省,因为我认为这对于使用地图 API 的人来说是一项非常常见的任务。

提前致谢

4

4 回答 4

79

我在这里有美国州多边形的 XML 。我像这样使用它们。

我故意保持细节相当简单,以减少加载时间,并最终得到一张在慢速浏览器中响应合理的地图。

我对加拿大没有任何东西。

于 2009-11-29T01:10:11.483 回答
6

使用提供的 XML,我创建了一个 JSON 文件,其中包含一个字典,其中包括 50 个州、华盛顿特区和加拿大各省的粗略轮廓,以解决 SaltyNuts 的评论以及 Mike Williams 关于加拿大json没有任何内容的注释。

这个来自 BirdTheme 的方便的在线工具是我用来为需要不同细节级别或创建自己的坐标集的其他人绘制省份多边形的工具。

于 2016-03-24T16:39:39.107 回答
1

老问题,但您可以从谷歌网站https://developers.google.com/kml/documentation/us_states.kml获得每个美国州边界的更详细的点集

不过,它需要对 xml 进行一些解析。

于 2018-05-11T18:47:54.830 回答
0

这是加拿大各省的信息。我只复制了 Google Map 链接中的第一个 GPS 坐标。

/**
 * Searched for Alberta, Canada and copied the first thing after the @ sign
 * @see https://www.google.bg/maps/place/Yukon+Territory,+Canada/@64.5610006,-141.332713,5z/data=!3m1!4b1!4m5!3m4!1s0x51178198b4528b89:0x2e149cd561cc96ea!8m2!3d64.2823274!4d-135?hl=en
 * @var array
 */
$provinces_gps = array(
    "AB" => "54.1784838,-123.9541477",
    "BC" => "53.8348151,-135.5103986",
    "MB" => "54.1798816,-104.4465713",
    "NB" => "46.2679312,-68.6551949",
    "NL" => "53.1668149,-69.1783083",
    "NT" => "68.4817407,-136.7732486",
    "NS" => "45.2906308,-65.2759181",
    "NU" => "63.5954344,-124.1555502",
    "ON" => "48.9347914,-93.7155729",
    "PE" => "46.5031512,-63.7525627",
    "QC" => "53.4650568,-77.3895206",
    "SK" => "54.1797758,-114.6389862",
    "YT" => "64.5610006,-141.332713",
);
于 2016-05-27T21:48:33.213 回答