Google Maps API(JS):检查我是否到达目的地

时间:2014-11-27 20:28:54

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

我正在为使用Google Maps API的iPad开发HTML5网络应用。这个API对我来说是新的,我已经搜索了与之相关的许多问题的答案。标记,信息窗口,路线,地理位置,街景。关于这一切的最有用的信息可以在官方文档中找到:

https://developers.google.com/maps/documentation/javascript/3.exp/reference?hl=ru

然而,我仍然无法找到解决一个(可能是简单的)问题的方法。例如,我创建了一个新的地图实例和一个标记(目标),开始观察我的位置(GEO位置)并绘制了一条到该标记位置的路线。 如何查看我何时到达目的地?我已查找DirectionsService,DirectionsRenderer等适当的事件,但没有结果。另外,我在这个网站上找到了相同的主题,但它是关于Android开发的,而不是JS(Android: How to check that whether i reach/near my Destination?)。

无望,我发明了自己的解决方案,但它似乎没有正常工作(我还没有完全测试它,我将在接下来的几天内完成它)。我想如果我将目前位置的lat& lng与目的地的lat& lng进行比较 - 那么我就能赶上到达目的地的那一刻:

if (myPosition.lat() == dest.marker.position.lat() && myPosition.lng() == dest.marker.position.lng()) {
     alert('You have arrived!');
}

此代码在navigator.geolocation.watchPosition

的成功监视位置回调中执行

你有什么想法吗?

3 个答案:

答案 0 :(得分:3)

LatLng是具有高精度的值,您无法预期两个标记的位置将完全匹配。

添加容差:

//tolerance 50 meters
//requires the geometry-library 
if(google.maps.geometry.spherical
   .computeDistanceBetween(myPosition,dest.marker.position)<50){
  alert('You have arrived!');
} 

答案 1 :(得分:0)

我认为制作自制解决方案并不是一个好主意,因为地图API可以解决所有问题。

Using Google Maps API to get travel time data

答案 2 :(得分:0)

对于 Android Studio 用户:

获取currentLocation和destinationLocation的对象

Location currentLocation;      // use fusedLocationProviderService
Location destinationLocation = new Location("");  // set Lat and Long 
destinationLocation.setLatitude(122.1234123); // like this

 if (location.distanceTo(new Location("")) < 30) { // meters
                    Toast.makeText(MainActivity.this, "Toast you have reached",
                            Toast.LENGTH_SHORT).show();
                }