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' 等记录在地图上正确显示。但是像“曲折/新格式”这样的记录却没有。

对此的任何见解将不胜感激。谢谢你的关注。

4

1 回答 1

2

Google Maps API 使用google.maps.LatLng 对象。转换为字符串时,坐标按“纬度,经度”的顺序排列。

KML 格式使用相反的顺序:

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

(也允许可选的第三个“高度”坐标)

更改代码以正确顺序输出坐标且不带括号

改变这个:

  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 回答