【问题标题】:Google maps api,Postgis,Multipolygon谷歌地图 api,Postgis,Multipolygon
【发布时间】:2025-12-02 18:50:02
【问题描述】:

Multipolygon 的 PostGis WKT 格式为:

MULTIPOLYGON(
((20.229 39.409,20.2241 39.401,20.220 39.410,20.229 39.409)),
((20.209 39.407,20.223 39.400,20.211 39.402,20.209 39.4076))
)

Google Maps api v3 多边形是:

var triangleCoords = [
    new google.maps.LatLng(25.774252, -80.190262),
    new google.maps.LatLng(18.466465, -66.118292),
    new google.maps.LatLng(32.321384, -64.75737)
  ];

问题是: 我可以在谷歌地图中创建多面体吗?

【问题讨论】:

    标签: api google-maps polygon postgis


    【解决方案1】:

    这有点老了,但我只是在做同样的事情,试图从谷歌地图中的 GeoJSON 文件创建 MultiPolygons,所以我想分享一下。

    基本上,不,你不能。但是您可以创建一个解决方法。

    首先创建一些东西来管理各个子多边形(对象、数组等)。然后用多面体的每个部分填充该对象。然后,您可以通过自定义方法或迭代将子多边形视为一个组。

    请参阅http://www.alecbennett.com/projects/loadgeojson,了解在 Google 地图 v3 中悬停时突出显示“MultiPolygon”的快速演示。数据是从 GeoJSON 文件加载的,因此与 WKT 版本类似。

    【讨论】:

      【解决方案2】:
      var multipolygon=[
      [new google.maps.LatLng(x1,y1),new google.maps.LatLng(x2,y2),new google.maps.LatLng(x3,y3)],
      .
      .
      .
      [new google.maps.LatLng(x4,y4),new google.maps.LatLng(x5,y5),new google.maps.LatLng(x6,y6)]
      ];
      

      【讨论】:

      • 您不必手动构建形状,因为数据已经在 PostGIS 中。只需查询 PostGIS 并让它输出您需要的格式。
      【解决方案3】:

      PostGIS 直接支持多种输出格式:

      http://postgis.refractions.net/documentation/manual-1.5/ch08.html

      查看 ST_As() 函数。

      Google Maps API 也支持其中的一些(SVG、KML 等)。您应该尝试使用双方都说的格式。现在我不确定谷歌地图是否接受任何这些格式的多面体。但你总是可以使用ST_Simplify() func。

      【讨论】: