谷歌地图 - 获取区域/社区的多边形边界

12

我想在Google Maps API v3上进行简单搜索,并得到一个带有彩色多边形的地图,就像下面的图片一样:

搜索:pinheiros, sao paulo

输入图像描述

3个回答

23
我通过使用 WikiMapia 的数据得到了它。
步骤如下:
  • 打开WikiMapia
  • F12Ctrl+Shift+I

enter image description here

  • 搜索您想要的位置。
  • 在附近点击右键,选择编辑多边形enter image description here
  • 在开发者工具中点击网络并过滤器选择getPolygonenter image description here
  • 复制服务器响应,看起来像这样: enter image description here

  • 然后转到控制台选项卡以执行函数:Wikimapia.Parser.Itiles.prototype.decodePolygon("Copyed text here");

  • 按回车键执行此操作后,控制台将返回带有点(多边形路径)的对象。
我使用 JSON.stringify 将对象转换为 JSON。
示例:
JSON.stringify(Wikimapia.Parser.Itiles.prototype.decodePolygon("-619402099;-109032887;02fe8953fffe5a000ae5fe379a000fedffd250000e40ffd6050007f7ffeff2001925ffd59b001f6fffdc310012dcffed10003b82ffd9b9005514ffc4520053d2ffc807000c92fff82dfffde7000e670005070012ef0009390021bf000572001358fffc3a001a57fffa210013c1ffff940036530008610022fc000284004732fff5f0001fb1fff2960013c1fff80800594efffde7002c72000f16004b5000204600416f0013b2002292"))

上面的代码将返回以下JSON(缩进在JsonFormatter中):
{
   "points":[
      {
         "lat":-10.9032887,
         "lng":-61.9402099
      },
      {
         "lat":-10.9032466,
         "lng":-61.9306183
      },
      {
         "lat":-10.8915629,
         "lng":-61.9308972
      },
      {
         "lat":-10.8903934,
         "lng":-61.9313049
      },
      {
         "lat":-10.8893188,
         "lng":-61.9316697
      },
      {
         "lat":-10.8889079,
         "lng":-61.9318736
      },
      {
         "lat":-10.8878227,
         "lng":-61.9325173
      },
      {
         "lat":-10.8869061,
         "lng":-61.933322
      },
      {
         "lat":-10.8864214,
         "lng":-61.9338048
      },
      {
         "lat":-10.8854416,
         "lng":-61.9353282
      },
      {
         "lat":-10.8839139,
         "lng":-61.9375062
      },
      {
         "lat":-10.8824811,
         "lng":-61.939652
      },
      {
         "lat":-10.8822809,
         "lng":-61.9399738
      },
      {
         "lat":-10.8826496,
         "lng":-61.9399202
      },
      {
         "lat":-10.8831343,
         "lng":-61.9400489
      },
      {
         "lat":-10.8839982,
         "lng":-61.940285
      },
      {
         "lat":-10.8844934,
         "lng":-61.9404244
      },
      {
         "lat":-10.8851677,
         "lng":-61.9403279
      },
      {
         "lat":-10.8856734,
         "lng":-61.9401777
      },
      {
         "lat":-10.8870641,
         "lng":-61.940167
      },
      {
         "lat":-10.8879597,
         "lng":-61.9403815
      },
      {
         "lat":-10.8897823,
         "lng":-61.9404459
      },
      {
         "lat":-10.8905936,
         "lng":-61.9401884
      },
      {
         "lat":-10.8910993,
         "lng":-61.9398451
      },
      {
         "lat":-10.8933855,
         "lng":-61.9396412
      },
      {
         "lat":-10.8945233,
         "lng":-61.9395876
      },
      {
         "lat":-10.8964513,
         "lng":-61.9399738
      },
      {
         "lat":-10.8981264,
         "lng":-61.9408
      },
      {
         "lat":-10.8990114,
         "lng":-61.9413042
      }
   ],
   "bounds":{
      "left":-61.9413042,
      "bottom":-10.9032887,
      "right":-61.9306183,
      "top":-10.8822809,
      "centerLatLng":null
   }
}

最后,我使用类似于regexr.com/3c5m2的正则表达式将JSON转换为WKT。我只在正则表达式中复制"points"数组中的对象,而不是整个JSON。在RegExr上,我复制替换后的文本并粘贴在POLYGON((pastehere))中。

重要!应用正则表达式后,您需要将第一个点重复到最后一个点。

-61.956523060798645 -10.877613428213532,-61.95640504360199 -10.877718788854143,-61.956791281700134 -10.878393096072424,-61.95735991001129 -10.87805594265392,-61.95682346820831 -10.877339490373695,-61.956523060798645 -10.877613428213532

然后你会得到像这样的东西:

POLYGON((-61.956523060798645 -10.877613428213532,-61.95640504360199 -10.877718788854143,-61.956791281700134 -10.878393096072424,-61.95735991001129 -10.87805594265392,-61.95682346820831 -10.877339490373695,-61.956523060798645 -10.877613428213532))

可以将其插入支持WKT格式的数据库中,比如MySQL。
WikiMapia有一个API,这个过程可以自动化,但这对我来说已经很好了。

我似乎找不到如何通过API完成这个任务.. 你有什么想法吗? - deann

2
简短回答是:不,Google Maps API没有提供该功能。
实现此功能的一种方法是找到您感兴趣的空间数据(多边形),将其加载到数据库中(最好支持空间查询),然后通过AJAX查询数据库,将要素几何体作为KML图层添加到地图上,并附带相应的推销。

1
Google Maps Javascript API v3的功能请求 - geocodezip

0

您可以在funda.nl的网站上查看此功能。当您选择一个特定的房产时,它还会显示一个谷歌地图,在该地图上绘制了所选房产所在社区的多边形。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接