我正在为使用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
的成功监视位置回调中执行你有什么想法吗?
答案 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可以解决所有问题。
答案 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();
}