【问题标题】:Google Maps API Using Waypoint LatLng使用 Waypoint LatLng 的 Google Maps API
【发布时间】:2018-03-20 00:51:20
【问题描述】:

我正在使用以下内容来获取航点数组:

var waypoints = displayer.getDirections().routes[0].legs[0].via_waypoints;

这会返回一个用括号括起来的坐标数组,例如 (37.09024, -95.71289),(37.09324, -95.71259)。

当我尝试将这些坐标作为沿新路线的航路点插入时,它会中断。我需要做些什么来解析这个数组并获取不带括号的 lat/lng 值的坐标吗?

谢谢!

【问题讨论】:

    标签: google-maps-api-3


    【解决方案1】:

    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]
        ];
    

    并在 for 循环中构造 new google.maps.LatLng(x,y) 对象,方法是传递 Points 数组的每个内部元素。

    ..
    ContstructedLatLng[i] = new google.maps.LatLng(Points[i][0],Points[i][2]);
    ..
    

    您还可以使用 Mozilla Firefox 的 Firebug 扩展在运行时调试您的 JavaScript。

    【讨论】:

    • .via_waypoints 自动返回括号中的纬度/经度坐标,所以如果我尝试将它们存储在第二个数组中,它会不会是这样的: var Points = [ [(lat,lng) ], [(lat,lng)] ];
    • @HWD 是的。如果可以的话,您可以更改 .via_waypoints 属性以返回 LatLngs 数组。或者,您可以实现一些其他方法,读取.via_waypoints 和其他类似方法并实例化LatLng 对象以呈现它们。您可以将其称为您的渲染处理程序。
    • 去掉括号的正则表达式似乎有点麻烦。您对实例化 LatLng 数组有更好的建议吗?感谢您的帮助。
    • @HWD 为什么必须以字符串的形式返回这些值?数据应以原始格式保存以在将来的调用中使用,并且在呈现给客户时应使用括号/等进行格式化。以漂亮的格式保存数据是没有意义的。
    • 这就是 .via_waypoints 返回它的方式。有没有办法将其作为原始纬度/经度坐标返回?
    【解决方案2】:

    由于 .via_waypoints 返回一个 LatLng 坐标,将其转换为字符串会为其加上括号。

    我能找到的唯一方法是在将数组加入字符串后使用正则表达式去除坐标周围的括号。

    每次创建新航点时我都会添加到字符串中,然后更新航点坐标的隐藏输入。

    然后将数据保存到数据库中,当地图再次加载时,我提取坐标字符串,将它们拆分回一个数组,并将它们解析为我的地图的航点值。

    【讨论】:

      【解决方案3】:

      您可以使用 lat() 和 lng() 方法,例如:

      让纬度 = event.latLng.lat();

      有关详细信息,请参阅此答案。 gmaps v3 get latitude from event.latLng

      【讨论】:

        猜你喜欢
        • 2022-06-15
        • 1970-01-01
        • 1970-01-01
        • 2011-07-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-25
        相关资源
        最近更新 更多