无法在Google地图中保存多边形

时间:2013-02-28 14:09:37

标签: javascript google-maps jquery google-maps-api-3

我有一个谷歌地图多边形对象:

var poly = new google.maps.Polygon({
  paths: [
    new google.maps.LatLng(25.774252, -80.190262),
    new google.maps.LatLng(18.466465, -66.118292),
    new google.maps.LatLng(32.321384, -64.75737)
  ]
});

我正试图通过jquery的AJAX将其发送到MySQL数据库:

$.post("savePolygon.php", {polygon: poly});

我在控制台中收到此错误:

TypeError: Cannot call method 'lat' of undefined

我已经看过一些关于保存多边形的帖子,他们都说要从poly中提取latLng并将它们保存在db中。当我这样做时:

var latLngs = poly.getPath().getArray();
$.post("savePolygon.php", {polygon: latLngs});

我得到了同样的错误。似乎数组的原型中有一个名为'lat'的函数。我想知道如何提取这些值并通过AJAX发送它们,以及为什么我会收到此错误?

1 个答案:

答案 0 :(得分:5)

使用google.maps.geometry.encoding.encodePath()对路径进行编码。此方法返回一个字符串,非常适合存储到DB中。要重复使用google.maps.geometry.encoding.decodePath()

解码字符串

请注意:默认情况下不会加载geometry-library,您必须通过将&libraries=geometry附加到maps-API脚本的src来加载它。

解释为什么你不能直接存储路径(例如作为JSON):
当你存储包含LatLng的路径(数组)时,你将丢失LatLng的原型,这是必不可少的,因为它定义了检索属性的方法(lat()lng()