【发布时间】:2014-06-11 09:41:45
【问题描述】:
我需要像这样显示带有邮政编码边界的谷歌地图
也许我忽略了它,但我还没有在 Google Maps API 文档中找到这方面的示例和专门讨论此内容的文档。我正在尝试在上面的网页链接上查看源代码,但对我来说它是如何工作的似乎并不明显。页面上还有其他东西,我不知道它是否是我需要的一部分。
一些简单的代码示例会很有帮助!谢谢!
【问题讨论】:
我需要像这样显示带有邮政编码边界的谷歌地图
也许我忽略了它,但我还没有在 Google Maps API 文档中找到这方面的示例和专门讨论此内容的文档。我正在尝试在上面的网页链接上查看源代码,但对我来说它是如何工作的似乎并不明显。页面上还有其他东西,我不知道它是否是我需要的一部分。
一些简单的代码示例会很有帮助!谢谢!
【问题讨论】:
如果还有人在这里寻找解决方案,那就是我如何设法划定界限。
运行命令从shp文件中获取geoJSON文件:
ogr2ogr -f "GeoJSON" -lco COORDINATE_PRECISION=4 -simplify 0.00010 zipRegions.json tl_2014_us_zcta510.shp
您可以使用简化来删除多余的点并压缩数据
只需这样的代码
var mapOptions = {
zoom: 12,
center: new google.maps.LatLng(42.1038846,-72.5868353),
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById('map'), mapOptions);
cartodb.createLayer(map, {
user_name: 'your_user_name',
type: 'cartodb',
sublayers: [
{
sql: "SELECT * FROM cartodb1",
cartocss: '#cartodb1 {polygon-fill: #7bd490;polygon-opacity: 0.7;line-color: #6da57a;line-width: 0.5;line-opacity: 1;}'
}
]})
.addTo(map, 0) // add the layer to our map which already contains 1 sublayer
.done(function(layer) {
console.log('Fine');
})
.error(function(e) {
console.log(e);
});
【讨论】:
Google Maps API 不会向您提供这些数据。你需要一个外部资源。 Fusion Table 可能会有所帮助。您可以查看this one。
然后,您需要根据表中的 KML 数据创建自己的图层。有documentation关于它。
您可以直接从 Fusion Table 渲染数据或将其导入到您自己的数据库中,这通常更适合性能。
希望这有助于您入门。尝试找到自己的方式,如果遇到困难,请提出另一个问题,并按照第一条评论的建议向我们展示您的代码。
【讨论】:
【讨论】:
我将 2016 年人口普查 kml 文件(超过 150MB)解析为超过 32,000 个单独的 kml 文件,您可以将其用作地图的 kml 图层。 我在这里放了一个 zip 文件: https://github.com/tomeralmog/zipcode-kml 希望这会有所帮助
【讨论】:
【讨论】:
我知道这是一个相对古老的问题,@tomer-almog 在制作 KML 文件方面做了一些出色的工作,但我偶然发现了这个免费资源(没有关系,只是使用数据),它包含各种地理格式的邮政编码数据(GeoJSON、KML 等)
https://public.opendatasoft.com/explore/dataset/us-zip-code-latitude-and-longitude/table/
可能对某人有用....
【讨论】: