我正在寻找一个免费的SDK,它提供了转向导航以集成到移动应用程序中。有人知道吗?我需要一个与android一起工作或者有一个javascript api所以我可以使用PhoneGap或Titanium。
提前致谢。
答案 0 :(得分:2)
MapQuest提供了一系列可用的免费服务和SDK。它们包括方向和许多其他导航功能。
从我所看到的情况来看,他们是最好的,对您在申请或网络上的使用没有任何限制。
查看here
更新(基于评论):
有几个,这取决于你想要做什么,这将使一个比另一个更好。一些最好的是Google和Bind,但我认为他们都对你如何使用它们有限制(在免费使用场景中,我不知道你愿意做什么)。我不会链接到那些,它们很容易找到。
我看过OpenRouteService,但我喜欢MapQuest。可编程网络列出了很多,并且可以很好地跟上那里的内容。如果您查看mapping category,您会发现一些可能符合您需求的服务。
您可能希望从不同的提供商中提取不同的部分。如果您能够遵守限制,Google就是一站式服务。
祝你好运!答案 1 :(得分:0)
Mapbox有一个Android的SKD:https://www.mapbox.com/blog/mapbox-android/
这也是Titanium on Titanium项目https://github.com/adampax/titanium-mapbox,在撰写本文时,该项目得到维护和发展。
另一种选择是Skobbler / Telenav,它也有Android SDK:
http://developer.skobbler.com/features#mobileDevicesAndWeb
可以从here
下载我知道他们也有一个javascript库,但我不确定这是否有效/它如何与Titanium或PhoneGap一起使用。 (如果你发现:)请在评论中告诉我。)
答案 2 :(得分:-3)
一个非常古老的问题,但它可能对某人有所帮助。 Mapbox最近推出了一个新的Android方向库,提供逐向导航。它是免费的。
使用路线库非常简单。 只需将以下内容添加到 build.gradle 即可开始使用
repositories {
mavenCentral()
}
dependencies {
compile ('com.mapbox.mapboxsdk:mapbox-android-directions:1.0.0@aar'){
transitive=true
}
}
要获取两个地理位置点之间的路线,请使用以下代码
// Downtown LA
Waypoint origin = new Waypoint(-118.24233, 34.05332);
// Santa Monica Pier
Waypoint destination = new Waypoint(-118.49666, 34.01114);
// Build the client object
MapboxDirections client = new MapboxDirections.Builder()
.setAccessToken(MAPBOX_ACCESS_TOKEN)
.setOrigin(origin)
.setDestination(destination)
.setProfile(DirectionsCriteria.PROFILE_DRIVING)
.build();
// Execute the request
Response<DirectionsResponse> response = client.execute();
DirectionsRoute route = response.body().getRoutes().get(0);
int distance = route.getDistance() // 26446 (in meters)
要在Mapbox地图上绘制路线,请执行以下操作:
// Convert List<Waypoint> into LatLng[]
List<Waypoint> waypoints = route.getGeometry().getWaypoints();
LatLng[] points = new LatLng[waypoints.size()];
for (int i = 0; i < waypoints.size(); i++) {
points[i] = new LatLng(
waypoints.get(i).getLatitude(),
waypoints.get(i).getLongitude());
}
// Draw Points on MapView
mapView.addPolyline(new PolylineOptions()
.add(points)
.color(Color.parseColor("#3887be"))
.width(5));
请检查一下: