我想计算并给出两套Lat和Long之间的距离,以便在Road上旅行.
我查看了Google的Directions and Distance Matrix API.并且还在SO上做了很多其他问题.
但我无法找到最好的方法,你需要计算每次约20-25个位置的距离.
我们正在构建一个旅行应用程序,该应用程序需要Android设备上的用户提供此信息.
我使用Google Directions API计算2个地点之间所需的时间.API为我提供了一个选项departure_time,我可以在其中传递出发时间(或"现在")的时间戳.然后答案是duration_in_traffic.这工作真的很棒.
但是我需要显示用户在他想要在特定时间达到目标时所需的时间.
例如,用户希望在晚上8点(20:00)进入多特蒙德.所以我需要告诉他什么时候他应该开始开车到达他想要的目标.API文档说,有一个参数arrival_time,它完全符合我的需要.不幸的是,他们说这只适用于公共交通工具.
但谷歌地图本身甚至为汽车提供了所需的功能!正如你在屏幕截图中看到的那样:我说我想在20:00进入多特蒙德并且google-maps说,我应该开始'arround 18:30'
那么我如何通过我的应用实现这一目标呢?我需要其他API还是需要传递其他参数?
这是我当前的API调用:
最好问候迈克尔
在我的android项目中,我想在Google地图上绘制路线.我有起点和终点的坐标.在这一点上,我km从谷歌网络服务获得-file,其中包含跨越路线的分数.对于绘制路径的部分,我使用Overlay类的实例.这个解决方案有效,但速度很慢.还有其他方法吗?可能存在能力使用内置谷歌地图应用程序或任何其他方式?
例如,此链接生成以下内容:
"routes" : [
{
"bounds" : {
"northeast" : {
"lat" : -20.1765204,
"lng" : 57.6137001
},
"southwest" : {
"lat" : -20.2921672,
"lng" : 57.4472155
}
},
"copyrights" : "Map data ©2014 Google",
"legs" : [
{
"distance" : {
"text" : "24.6 km",
"value" : 24628
},
Run Code Online (Sandbox Code Playgroud)
我想只提取距离并在android中显示它
我正在尝试将InfoWindow添加到路线路线.有很多例子可以在标记上的事件监听器上添加InfoWindow.
但是,如何将InfoWindow移动到从一个标记到另一个标记的实际计划路线上.有人之前已经尝试过问这个问题,但没有回复(InfoWindow on Directions Route).
无论如何,我做了很多谷歌搜索,只发现了一个与此类似的问题,但是再次没有回应.
我infowindow.open(map,this)在回调中尝试了标记上的事件,但它会在标记位置打开InfoWindow.它只是我希望显示像谷歌一样的持续时间和距离.像附图中的东西
var infowindow2 = new google.maps.InfoWindow();
distanceService.getDistanceMatrix(distanceRequest, function (response, status) {
if (status == "OK") {
infowindow2.setContent(response.rows[0].elements[0].distance.text + "<br>" + response.rows[0].elements[0].duration.text + " ")
}
else {
alert("Error: " + status)
}
})
infowindow2.open(map, this);
Run Code Online (Sandbox Code Playgroud)

javascript google-maps infowindow directions google-directions-api
我MapsActivity在这个项目中使用了这个类.在我的地图上,您可以看到许多标记.我有许多已知的位置,但在我的代码中,我只显示两个位置.
我不明白如何使用方向API和JSON.如何显示从当前位置(更改)到已知位置(常量)的路线,距离和行驶时间?
public class MapsActivity extends FragmentActivity {
private GoogleMap mMap; // Might be null if Google Play services APK is not available.
private Map<Marker, Class<?>> allMarkersMap = new HashMap<Marker, Class<?>>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
setUpMapIfNeeded();
}
private void setUpMap() {
Marker marker1 = mMap.addMarker(new MarkerOptions()
.position(new LatLng(14.608177, 120.967422))
.title("Sample2")
.snippet("zzzzzzz"));
allMarkersMap.put(marker1, MainActivity.class);
Marker marker2 = mMap.addMarker(new MarkerOptions()
.position(new LatLng(14.611335, 120.962160))
.title("Sample1")
.snippet("sssssss"));
allMarkersMap.put(marker2, MainActivity2Activity.class);
mMap.setMyLocationEnabled(true);
mMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
@Override
public void onInfoWindowClick(Marker marker) …Run Code Online (Sandbox Code Playgroud) 我有一个问题,即在使用Google Direction Api时,我们可以获取城市名称,Lat&Lng等数据列表,但Api提供的数据仅限于某些范围.它无法为所有城市提供特定路线.
例如,如果我们试图去Chandigarh到德里,那么这条路线有一个固定的结果但是当我们试图扭转同样的搜索,即德里到Chandigarh时,一些先前结果的城市在api的新结果中消失了,而且,我们只需要有限的位置/城市,我们需要完全详细的路线.
你们中的任何人以前都遇到过这个问题吗?有没有其他方法来匹配这样的要求?
希望我能理解.
谢谢.
我正在开发一个应用程序,它使用谷歌 API 来获取交通解决方案,以便在所需的时间到达某个位置。
\n\n我调用 google API 的代码与“驾驶”和“步行”出行模式完美配合,但对于“公交”和“骑自行车”,响应始终标记为状态“ZERO_RESULTS”,并且不计算任何路线。\n这由google 文档,意味着在必须计算解决方案的国家/地区不提供公共交通和骑自行车服务。\n我尝试了多个国家/地区,但总是得到相同的结果,我还尝试了概述中的 Google 示例(针对公共交通)和它不起作用。
\n\n我通过 HTTPS 请求传递的参数是:出发地、目的地、出行方式、到达时间。\n我尝试的第一件事是更改到达时间,以防该值指的是过去或太遥远的未来,但它不起作用。
\n\n如果我没有通过“arrival_time”,响应是完美的,但我不明白,因为在 Google 文档中很清楚,arrival_time 是 https 请求的一个可能参数,也适用于过境旅行模式。如果没有这个论点,这个请求对我的目标来说毫无用处。
\n\n奇怪的是,如果我通过“过境”(带有到达或出发时间),则响应是这样的:
\n\n{\n "available_travel_modes" : [ "DRIVING", "WALKING" ],\n "geocoded_waypoints" : [\n {\n "geocoder_status" : "OK",\n "place_id" : "ChIJu46S-ZZhLxMROG5lkwZ3D7k",\n "types" : [ "locality", "political" ]\n },\n {\n "geocoder_status" : "OK",\n "place_id" : "ChIJ53USP0nBhkcRjQ50xhPN_zw",\n "types" : [ "locality", "political" ]\n }\n ],\n "routes" : [],\n "status" : "ZERO_RESULTS"\n}\nRun Code Online (Sandbox Code Playgroud)\n\n如果我通过“骑自行车”(所有其他参数不变):
\n\n{\n "available_travel_modes" : [ "DRIVING", "WALKING", "TRANSIT" …Run Code Online (Sandbox Code Playgroud) 在使用Google Directions API完成一个项目后,我发现多个响应的uration_in_traffic值比uration。我收到的回复之一的示例摘录:
\n\n"duration": {\n "text": "23 mins",\n "value": 1374\n},\n"duration_in_traffic": {\n "text": "16 mins",\n "value": 941\n},\n"end_address": "2868 Mission St, San Francisco, CA 94110, USA",\n"end_location": {\n "lat": 37.7522994,\n "lng": -122.4184684\n},\n"start_address": "O\'Farrell St & Powell St, San Francisco, CA 94102, USA",\n"start_location": {\n "lat": 37.78640559999999,\n "lng": -122.4082846\n},\nRun Code Online (Sandbox Code Playgroud)\n\n这对我来说似乎没有多大意义,因为我假设持续时间只是没有流量的持续时间 ,而duration_in_traffic显然包含了流量条件。我在另一个线程上找到了答案,但回答者没有提供任何来源来支持他或她的主张/观察。除了文档之外,是否还有有关持续时间响应字段的更多信息响应字段的更多信息,文档仅将其描述为 \xe2\x80\x9c[指示] 该腿\xe2\x80\x9d 的总持续时间?是否有消息来源表明这实际上是该路线的平均时间?持续时间和duration_in_traffic之间有什么区别?
\n尝试获取地图中两点之间的方向路线
这是我用来获取路线的网址
另外,我已经在谷歌云控制台中启用了我的计费帐户,但仍然得到输出
{
"error_message": "You must enable Billing on the Google Cloud Project at https://console.cloud.google.com/project/_/billing/enable Learn more at https://developers.google.com/maps/gmp-get-started",
"routes": [],
"status": "REQUEST_DENIED"
}
Run Code Online (Sandbox Code Playgroud) android google-maps google-directions-api android-studio google-cloud-platform
google-maps ×7
android ×6
google-api ×2
api ×1
directions ×1
distance ×1
geolocation ×1
infowindow ×1
javascript ×1
json ×1
maps ×1
routes ×1
travel-time ×1