,但是在新版SDK中,由于某些原因,它已被删除... Android:自API 1.0起删除了DrivingDirections-操作它是在1.5 / 1.6版中发布的吗? for kml file and parse it):Android-Driving Direction(Route Path)
Andrea还为Android制作了DrivingDirections帮助器类。
我在j2me中为此功能编写了一个小助手,在Android和BlackBerry上分享我的样本。
更新
正如评论中所述,它并未正式允许使用Google Maps API服务条款:
Google Maps / Google Earth API条款服务的更新
最近更新:2009年5月27日
...
10.许可限制。除非本条款明确允许,或者除非您事先已获得Google(或(如果适用)特定内容提供商的书面许可),否则上述Google的许可均受您遵守以下所有限制的约束。除非第7节或Maps API文档明确允许,否则您不得(也不允许他人):
...
10.9将服务或内容与任何产品,系统或产品一起使用
(a)实时导航或路线指南,包括但不限于与用户启用传感器的设备的位置同步的转弯路线指南; >
,并且可能被某些应用禁用(至少在Android上是这样)...从.NET对话的地址解析中抓取: API使用条款允许。您不应该抓取
Google地图来生成地理编码。我们将阻止对服务器进行自动查询的服务。
Bret Taylor
Google地图产品经理
非常感谢任何替代和/或建议!
谢谢!
#1 楼
J2ME Map Route Providermaps.google.com具有导航服务,可以为您提供KML格式的路线信息。
要获取kml文件,我们需要形成带有起始位置和目标位置的url: SAXParser)和填充数据结构:
public static String getUrl(double fromLat, double fromLon,
double toLat, double toLon) {// connect to map web service
StringBuffer urlString = new StringBuffer();
urlString.append("http://maps.google.com/maps?f=d&hl=en");
urlString.append("&saddr=");// from
urlString.append(Double.toString(fromLat));
urlString.append(",");
urlString.append(Double.toString(fromLon));
urlString.append("&daddr=");// to
urlString.append(Double.toString(toLat));
urlString.append(",");
urlString.append(Double.toString(toLon));
urlString.append("&ie=UTF8&0&om=0&output=kml");
return urlString.toString();
}
网络连接在Android和Blackberry上以不同的方式实现,因此您必须首先形成URL: br />
public class Point {
String mName;
String mDescription;
String mIconUrl;
double mLatitude;
double mLongitude;
}
public class Road {
public String mName;
public String mDescription;
public int mColor;
public int mWidth;
public double[][] mRoute = new double[][] {};
public Point[] mPoints = new Point[] {};
}
然后使用此URL创建连接并获取InputStream。
然后传递此InputStream并获取解析的数据结构:
public static String getUrl(double fromLat, double fromLon,
double toLat, double toLon)
完整的源代码RoadProvider.java
BlackBerry
public static Road getRoute(InputStream is)
在Google代码上查看J2MEMapRouteBlackBerryBlackBerryEx的完整代码
Android
class MapPathScreen extends MainScreen {
MapControl map;
Road mRoad = new Road();
public MapPathScreen() {
double fromLat = 49.85, fromLon = 24.016667;
double toLat = 50.45, toLon = 30.523333;
String url = RoadProvider.getUrl(fromLat, fromLon, toLat, toLon);
InputStream is = getConnection(url);
mRoad = RoadProvider.getRoute(is);
map = new MapControl();
add(new LabelField(mRoad.mName));
add(new LabelField(mRoad.mDescription));
add(map);
}
protected void onUiEngineAttached(boolean attached) {
super.onUiEngineAttached(attached);
if (attached) {
map.drawPath(mRoad);
}
}
private InputStream getConnection(String url) {
HttpConnection urlConnection = null;
InputStream is = null;
try {
urlConnection = (HttpConnection) Connector.open(url);
urlConnection.setRequestMethod("GET");
is = urlConnection.openInputStream();
} catch (IOException e) {
e.printStackTrace();
}
return is;
}
}
在Google Code上查看J2MEMapRouteAndroidEx的完整代码
评论
code.google.com/intl/zh-CN/android/add-ons/google-apis/…
–马克斯·贡塔尔(Maksym Gontar)
10-4-2在10:34
由于Google已停止以KML格式给出响应,因此该代码将无法再使用。这是Stack Overflow问题答案中解决方案的链接,为什么使用KML数据检索Android的Google Directions不再起作用?
– Kendrelaxman
2012年8月9日在9:29
以下是完整的文档:developers.google.com/maps/documentation/directions
– Alexey
2012年9月12日在6:44
上面的解决方案不再使用API2。我设法使用Google Map android API v2在两点之间绘制了一条路径。我在该链接上发布了其解决方案。回答:使用Google Maps Android API v2在两点之间绘制路径
–Zeeshan Mirza
13年3月12日在7:09
评论
我认为刮刮Google Maps这样的行车路线可能违反Google的使用条款。我正在mRoad中获取所有点,但它们未在MAP上映射。.MAP中显示的路径仅是从斋浦尔到德里的!
@Vishal:对不起,但我对此无能为力!请发布单独的问题!