13

我的应用程序允许用户选择地图上的两个点,并使用 Google maps Apiv3 的 Directions Service 找到它们之间的路线。然后沿着这条路线的坐标必须保存到数据库中。我可以成功编写所有代码来完成此任务。但是我被一个问题排除在外。

我知道 StackOverflow 中还有其他几个问题 - One , Two on the same,但我认为他们或我肯定在这里错过了一些东西。

示例代码:

function getCoordinates(result) {
            var currentRouteArray = result.routes[0];  //Returns a complex object containing the results of the current route
            var currentRoute = currentRouteArray.overview_path; //Returns a simplified version of all the coordinates on the path


            obj_newPolyline = new google.maps.Polyline({ map: map }); //a polyline just to verify my code is fetching the coordinates
            var path = obj_newPolyline.getPath();
            for (var x = 0; x < currentRoute.length; x++) {
                var pos = new google.maps.LatLng(currentRoute[x].kb, currentRoute[x].lb)
                latArray[x] = currentRoute[x].kb; //Returns the latitude
                lngArray[x] = currentRoute[x].lb; //Returns the longitude
                path.push(pos);
            }
      }

上面的代码工作完美,除了似乎包含 lat 和 lng 坐标的概览路径的kb和属性并不总是相同的。lb上次写代码的时候是kbandlb几天,后来改成mb,nb今天jbkb.

除了上述之外,我没有看到对象中可以为我提供 latlng 的任何其他属性。其他类似问题的答案都提到了这个问题。我在这里错过了什么吗?请提供任何可靠的解决方案。

4

2 回答 2

12

不要使用缩小名称且未记录的 kb 和 lb。仅使用记录的属性 .lat() 和 .lng()

于 2013-03-30T11:56:52.537 回答
0

另一种选择是解码“点”字符串:

http://home.provide.net/~bratliff/routes/

它比对每个单独的点使用 lat() / lng() 方法要快得多。

于 2013-03-30T14:00:27.577 回答