【问题标题】:How to take Map coordinates and reverse them so they follow KML standard? (lat/lon vs lon/lat)如何获取地图坐标并反转它们以使其遵循 KML 标准? (纬度/经度与经度/纬度)
【发布时间】:2023-04-07 01:44:01
【问题描述】:

我的地图允许用户绘制与最近道路对齐的坐标。我捕获生成的折线并将它们存储在融合表中。

现在我想检索这些折线坐标并显示在地图上。

当我在融合表中有以下内容时,它会正确映射:

<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 is here。如果您绘制了几条折线,您可以单击“清除”控件以获取显示坐标的警报,或者您可以双击结束折线绘制,这将弹出一个带有“位置”字段的信息框最终出现在融合表中的坐标。

This is the fusion table。 'scce' 和 'scenic' 等记录在地图上正确显示。但是像“曲折/新格式”这样的记录却没有。

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

【问题讨论】:

  • 生成“地图输入”的代码在哪里?更改输出正确的格式应该很简单。

标签: google-maps google-maps-api-3 kml


【解决方案1】:

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

KML format 使用相反的顺序:

<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>");

(未测试)

【讨论】:

  • 完美。我添加了 geolines.replace(/ /g,"%20") 所以我可以通过 URL 传递字符串,看起来这会起作用。我尝试按照您在上面所做的方式遍历数组,但从未弄清楚。非常感谢。
  • 另外,您的网站看起来是一个很棒的资源。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-04
  • 1970-01-01
  • 2021-04-19
  • 2012-02-18
  • 2017-06-29
相关资源
最近更新 更多