我正在使用以下内容获取一系列航路点:
var waypoints = displayer.getDirections().routes[0].legs[0].via_waypoints;
返回一个用括号括起来的坐标数组,如(37.09024,-95.71289),(37.09324,-95.71259)。
当我尝试将这些坐标作为沿新路线的航点插入时,它会中断。有什么我需要做的事情来解析这个数组并获得坐标而没有围绕lat / lng值的括号吗?
谢谢!
答案 0 :(得分:0)
Google Maps API Reference documentation仅显示LatLng
对象的一个构造函数
LatLng(lat:number, lng:number, noWrap?:boolean)
因此,如果您只是将"(37.09024, -9571289)"
或字符串数组之类的字符串传递给LatLng
构造函数,则不能指望它将该参数神奇地转换为坐标。
您可以将路线的坐标存储在二维数组中
var Points = [
[11.2222, 22.3333],
[33.4444, 44.5555]
];
通过传递new google.maps.LatLng(x,y)
数组的每个内部元素,在for循环中和contstruct Points
个对象。
..
ContstructedLatLng[i] = new google.maps.LatLng(Points[i][0],Points[i][2]);
..
此外,您可以使用Firebug扩展名为Mozilla Firefox在运行时调试JavaScript。
答案 1 :(得分:0)
由于.via_waypoints返回LatLng坐标,因此将其转换为字符串会使其成为括号。
我能找到的唯一方法是在将数组连接成字符串后使用正则表达式去除坐标周围的括号。
每次创建新航点时,我都会添加字符串,然后更新航点坐标的隐藏输入。
然后将数据保存到数据库中,当地图再次加载时,我拉出坐标字符串,将它们拆分成数组,然后将它们解析为我的地图的航路点值。
答案 2 :(得分:0)
您可以使用lat()和lng()方法,例如:
let latitude = event.latLng.lat();
有关详细信息,请参阅此答案。 gmaps v3 get latitude from event.latLng