我需要像这样显示带有邮政编码边界的谷歌地图
也许我忽略了它,但我还没有找到这方面的例子和文档在Google Maps API文档中专门讨论这个问题。我尝试在上面的网页链接上查看视图来源,但对我来说它的工作方式似乎并不明显。页面上还有其他内容,我不知道它是否是我需要与否的一部分。
一些简单的代码示例将非常有用!谢谢!
答案 0 :(得分:9)
如果还有人在这里寻找解决方案,那么我是如何设法划定界限的。
运行命令从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);
});
答案 1 :(得分:4)
Google Maps API不会向您提供此数据。你需要一个外部来源。 Fusion Table可能会有所帮助。您可以查看this one。
然后,您需要根据表格中的KML数据创建自己的图层。关于它有documentation。
您可以直接从Fusion Table呈现数据或将其导入您自己的数据库,这通常是性能优先的。
希望这有助于您入门。尝试找到自己的方式,如果遇到困难,请提出另一个问题,并在第一条评论中向我们展示您的代码。
答案 2 :(得分:2)
答案 3 :(得分:1)
A Very Simply API exists for this query by zipcode,city,etc.. returns geoJson
答案 4 :(得分:0)
我将2016年人口普查kml文件(超过150MB)解析为超过32,000个单独的kml文件,您可以将这些文件用作地图的kml图层。 我在这里放了一个zip文件: https://github.com/tomeralmog/zipcode-kml 希望这有帮助
答案 5 :(得分:0)
我知道这是一个相对较旧的问题,@tomer-almog 在制作 KML 文件方面做了一些出色的工作,但我偶然发现了这个免费资源(没有关系,只是使用数据),它具有各种地理格式的邮政编码数据(GeoJSON、KML 等)
https://public.opendatasoft.com/explore/dataset/us-zip-code-latitude-and-longitude/table/
可能对某人有用....