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

计划A)多边形

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

计划B)叠加

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

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

提前致谢

有帮助吗?

解决方案

我已获得美国州多边形的XML 此处。我使用它们像这个

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

我对加拿大没有任何帮助。

其他提示

使用提供的XML,我创建了一个带有字典的JSON文件,其中包括50个州,华盛顿特区和加拿大各省的大致轮廓,以解决SaltyNuts的评论以及Mike Williams关于加拿大没有任何内容的说明< a href =“https://drive.google.com/file/d/0BwI7t2lr3BAjTFhhaWVvaWZ0WFU/view?usp=sharing"rel =”nofollow“> json 。

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

以下是加拿大各省的信息。 我只复制了谷歌地图链接中的第一个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",
);

旧问题,但您可以从Google网站 https://developers.google.com/kml/documentation/us_states.kml

虽然需要对xml进行一些解析。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top