1

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

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 db:

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

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

TypeError: Cannot call method 'lat' of undefined

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

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

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

4

1 回答 1

5

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

请注意:geometry-library 默认不加载,您必须通过附加&libraries=geometry到 maps-API-script 的 src 来加载它。

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

于 2013-02-28T19:54:23.257 回答