使用谷歌地图Api的邮政编码边界

时间:2014-04-25 15:23:54

标签: google-maps-api-3

我需要像这样显示带有邮政编码边界的谷歌地图

http://maps.huge.info/zip.htm

也许我忽略了它,但我还没有找到这方面的例子和文档在Google Maps API文档中专门讨论这个问题。我尝试在上面的网页链接上查看视图来源,但对我来说它的工作方式似乎并不明显。页面上还有其他内容,我不知道它是否是我需要与否的一部分。

一些简单的代码示例将非常有用!谢谢!

6 个答案:

答案 0 :(得分:9)

如果还有人在这里寻找解决方案,那么我是如何设法划定界限的。

  1. http://www2.census.gov/geo/tiger/TIGER2014/ZCTA5/tl_2014_us_zcta510.zip(约500mb)
  2. 下载zip文件
  3. 解压缩它,你需要提取文件中的shp文件
  4. 在Windows上,您需要安装QGIS才能获得ogr2ogr实用程序
  5. 运行命令从shp文件中获取geoJSON文件:

    ogr2ogr -f "GeoJSON" -lco COORDINATE_PRECISION=4 -simplify 0.00010 zipRegions.json tl_2014_us_zcta510.shp

    您可以使用简化来删除额外点并压缩数据

  6. 在cartodb上创建免费帐户
  7. 上传zipRegions.json文件
  8. 现在使用cartodb.js文件,您可以轻松地在谷歌地图上绘制邮政编码区域
  9. 只需按照这样的代码

    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)

处理相同的事情并发现边界 - 对于我们的用例来说太昂贵了。

查看https://www.maptechnica.com/

  • 更大的数据集
  • 更实惠

答案 3 :(得分:1)

A Very Simply API exists for this query by zipcode,city,etc.. returns geoJson

http://www.boundaries-io.com

Image of the results in GooleMap: enter image description here

答案 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/

可能对某人有用....