是否有可能获得当前位置与街道,大街或区域之间的距离?

关于计算距离的所有解决scheme都在两点之间。 我的问题是:有什么方法可以计算到某条街道的距离?

假设我想计算从我的位置到特定区域或大街的距离,这里有很多街道到达那里,在这种情况下,如何知道最近的街道到达那里?

这里我只有一个点(我的位置),而目的地点是不同的,取决于我目前的位置。 我所知道的目的地是在一定的街道或地区,那么如何计算呢?

这个问题的另一个案例,假设我离一条长达1公里的某条街道10米远。 我应该可以计算出,距离街道起点10米,进入街道后距离我的距离是10米,而我每醒来1公里,我的位置到这条街道的距离应该是0米,当我离开另一边的距离应该从该街道的终点再次计算,而不是从起始点,所以当我离开它约5米时,它应该计算为5米而不是1005米。


这是谷歌地图上的例子的要求:

首先让我们看看纽约市的华尔街在地图上。

在这里输入图像说明

所以目标是华尔街。 现在如果你现在在约翰街与水街交叉的地方,我的任务就是把你带到华尔街最近的地方,path就像这个一样 (散步模式)。

在这里输入图像说明

然而,如果你在比弗街与宽街的十字路口,那么到华尔街最近点的目的地将是这样一个 (步行模式):

在这里输入图像说明

这是我的问题


可能吗? 新的API提供了一个解决scheme吗?

任何解决scheme或想法?

Solutions Collecting From Web of "是否有可能获得当前位置与街道,大街或区域之间的距离?"

嘿是的,你会得到search的位置的纬度和经度,在这里我将例子如何可以得到。

您可以使用谷歌自动完成search任何地方。然后从自动完成api获取placeid ,然后传递给细节 API。

https://maps.googleapis.com/maps/api/place/autocomplete/json

https://maps.googleapis.com/maps/api/place/details/json

请参阅传递参数

//Google Autocomplete @GET(ApiConstants.GET_AUTOCOMPLETE) Observable<GoogleAutocompleteSearchResponse> getAutoCompleteSearch(@Query("input") String input, @Query("key") String key, @Query("components") String components); // Google Autocomplete places @GET(ApiConstants.GET_AUTOCOMPLETE_PLACE) Observable<GoogleAutoCompletePlacesResponse> getAutoCompletePlaces(@Query("placeid") String input, @Query("key") String key); 

你可以在第二个api获得纬度经度。

希望这会帮助你。

首先得到目标位置的经度,纬度

 public Location getCoordinatesFromAddress(Context context,String strAddress) { Geocoder coder = new Geocoder(context); List<Address> address; Location destinationLoc = null; try { address = coder.getFromLocationName(strAddress, 5); if (address == null) { return null; } Address location = address.get(0); destinationLoc = new Location("Destination"); destinationLoc.setLatitude(location.getLatitude()); destinationLoc.setLongitude(location.getLongitude()); } catch (Exception ex) { ex.printStackTrace(); } return destinationLoc; } 

正如你所提到的,你有你的现在位置的经度和纬度。 用它来创build你的当前位置。

 Location locationA = new Location("Present location "); locationA.setLatitude(latA); locationA.setLongitude(lngA); 

下一步获得你的目的地和来源(目前)的纬度和经度的位置,你可以很容易地计算出它们之间的距离,例如

 float distance = locationA.distanceTo(locationB); 

它会给你两个以米为单位的地理位置的距离。

看看这个回应 。 也从谷歌看这个API 。

我想你想要的是这样的:
– 获得有针对性的街道坐标[lat,long]
– 从谷歌获得附近的地方,
– search最近的地方。

在这种情况下,如果你能得到目的地和原点的地址,那么通过下面的方法你可以得到地址之间的距离。

您需要传递地址(来源/目的地)或纬度/经度(来源/目的地)

1)如果提供了地址,那么原始参数可以如下所示

 origins=Bobcaygeon+ON|24+Sussex+Drive+Ottawa+ON 

2)如果提供纬度/经度,那么格式如下。

 origins=41.43206,-81.38992 

3)如果你能得到地点ID,那么这将是格式

 origins=place_id:ChIJ3S-JXmauEmsRUcIaWtf4MzE 

以下示例使用纬度/经度坐标来指定目标坐标

 https://maps.googleapis.com/maps/api/distancematrix/json?units=imperial&origins=40.6655101,-73.89188969999998&destinations=40.6905615%2C-73.9976592%7C40.6905615%2C-73.9976592%7C40.6905615%2C-73.9976592%7C40.6905615%2C-73.9976592%7C40.6905615%2C-73.9976592%7C40.6905615%2C-73.9976592%7C40.659569%2C-73.933783%7C40.729029%2C-73.851524%7C40.6860072%2C-73.6334271%7C40.598566%2C-73.7527626%7C40.659569%2C-73.933783%7C40.729029%2C-73.851524%7C40.6860072%2C-73.6334271%7C40.598566%2C-73.7527626&key=YOUR_API_KEY 

相同的编码折线请求将会被执行

 https://maps.googleapis.com/maps/api/distancematrix/json?units=imperial&origins=40.6655101,-73.89188969999998&destinations=enc:_kjwFjtsbMt%60EgnKcqLcaOzkGari%40naPxhVg%7CJjjb%40cqLcaOzkGari%40naPxhV:&key=YOUR_API_KEY 

正如其他人所解释的,使用API​​来寻找最短距离的一般方法是

 float distance = firstLocation.distanceTo(secondLocation); 

欲了解更多信息,请通过此链接

只要使用Haversine公式计算两点之间的距离,如果知道每个点的经度和纬度。

  • 节点包: Haversine节点
  • Gradle: Gradle Haversine