我的地图可让用户绘制与最近道路对齐的坐标。我捕获生成的折线并将它们存储在融合表中。
现在我想检索这些折线坐标并在地图上显示。
当我在融合表中有以下内容时,它会正确映射:
<LineString><coordinates>-93.2817792892456,37.20134698578519 -93.28178000000001,37.201420000000006 -93.27869000000001,37.2014 -93.27869000000001,37.2014 -93.27813,37.2014</coordinates></LineString>
但不幸的是,Map输入正在捕获更像这样的东西:
<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 is here。如果您绘制一些折线,您可以单击“清除”控件以获取显示坐标的警报,也可以双击以结束折线图,这将显示一个信息框,其中“位置”字段已预先填充最终在融合表中的坐标。
This is the fusion table。像'scce'和'scenic'这样的记录在地图上正确显示。但像'曲折/新格式'这样的记录却没有。
对此的任何见解都将受到高度赞赏。谢谢你的期待。
答案 0 :(得分:2)
Google Maps API使用google.maps.LatLng objects。当转换为字符串时,坐标的顺序为&#34;纬度,经度&#34;。
KML format使用相反的顺序:
<coordinates>longitude1,latitude1 longitude2,latitude2</coordinates>
(也允许可选的第三个&#34;高度&#34;坐标)
更改代码,以正确的顺序输出坐标,不带括号
改变这个:
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>");
(未经测试)