1

Google マップのポリゴン オブジェクトがあります。

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()を使用してパスをエンコードします。このメソッドは、DB に格納するのに最適な文字列を返します。再利用するには、次を使用して文字列をデコードします google.maps.geometry.encoding.decodePath()

注意: ジオメトリ ライブラリはデフォルトではロードされません&libraries=geometry。マップ API スクリプトの src に追加してロードする必要があります。

パスを直接 (たとえば JSON として) 保存できない理由を説明するには:
LatLng を含むパス (配列) を保存すると、LatLng のプロトタイプが失われます。これは、取得するためのメソッドを定義するために不可欠です。プロパティ(lat()lng())

于 2013-02-28T19:54:23.257 に答える