1

私の地図では、ユーザーは最も近い道路にスナップする座標を描くことができます。結果のポリラインをキャプチャして、フュージョンテーブルに保存します。

次に、これらのポリライン座標を取得して、マップに表示します。

フュージョンテーブルに次のものがある場合、正しくマップされます。

<LineString><coordinates>-93.2817792892456,37.20134698578519 -93.28178000000001,37.201420000000006 -93.27869000000001,37.2014 -93.27869000000001,37.2014 -93.27813,37.2014</coordinates></LineString>

しかし、残念ながら、マップ入力は次のようなものをキャプチャしています。

<LineString><coordinates>(37.20134698578519,-93.2817792892456),(37.201420000000006,-93.28178000000001),(37.2014,-93.27869000000001),(37.2014,-93.27869000000001),(37.2014,-93.27813)</coordinates></LineString>

私の質問は、この問題を解決するために、この文字列を解析して許容可能な形式に適合するようにする必要があるのか​​、それとも何かが足りないのに、これを行うためのより簡単で許容できる方法があるのか​​ということです。

Jsfiddleはここにあります。いくつかのポリラインを描画する場合は、「クリア」コントロールをクリックして座標を示すアラートを取得するか、ダブルクリックしてポリライン描画を終了すると、「場所」フィールドが事前にポーリングされたインフォボックスが表示されます。最終的にフュージョンテーブルに含まれる座標。

これがフュージョンテーブルです。'scce'や'scenic'などのレコードがマップに正しく表示されます。しかし、「twisty/newformat」のようなレコードはそうではありません。

これに関する洞察をいただければ幸いです。ご覧いただきありがとうございます。

4

1 に答える 1

2

Google Maps APIは、google.maps.LatLngオブジェクトを使用します。文字列に変換すると、座標は「緯度、経度」の順序になります。

KML形式は逆の順序を使用します。

<coordinates>longitude1,latitude1 longitude2,latitude2</coordinates> 

(オプションの3番目の「高さ」座標も使用できます)

コードを変更して、座標を括弧なしで正しい順序で出力します

これを変える:

  geolines=escape("<LineString><coordinates>")+poly.getPath().getArray().toString().replace(/([\s]+)/g, '')+escape("</coordinates></LineString>") ;

に:

  geolines=escape("<LineString><coordinates>");
  var path = poly.getPath();
  var length = path.getLength();
  for (var i=0; i < length; i++) {
    geolines += path.getAt(i).lng()+","+path.getAt(i).lat()+" ";
  }
  geolines+= escape("</coordinates></LineString>");

(未検証)

于 2013-01-12T21:24:44.967 に答える