java - 仅在 Google map 上显示行程(Xml 格式?,2012)

标签 java android google-maps

因此,自 2012 年 7 月 21 日起,据我所知,不再可能使用 KLM 在 2 个 GeoPoint 之间绘制路径,我遵循以下操作:

Why retrieving Google Directions for Android using KML data is not working anymore?

但是我收到一个错误,这里是我的 Activity 中的 onCreate() 方法:

  Route route = directions(new GeoPoint((int)(26.2*1E6),(int)(50.6*1E6)), new     GeoPoint((int)(26.3*1E6),(int)(50.7*1E6)));
 RouteOverlay routeOverlay = new RouteOverlay(route, Color.BLUE);
 mapView.getOverlays().add(routeOverlay);
 mapView.invalidate();

Activity 中调用的方法:

 private Route directions(final GeoPoint start, final GeoPoint dest) {

//Changed from Parser to GoogleParser beacause i had Error
 GoogleParser parser;
//https://developers.google.com/maps/documentation/directions/#JSON <- get api
String jsonURL = "http://maps.googleapis.com/maps/api/directions/json?";
final StringBuffer sBuf = new StringBuffer(jsonURL);
sBuf.append("origin=");
sBuf.append(start.getLatitudeE6()/1E6);
sBuf.append(',');
sBuf.append(start.getLongitudeE6()/1E6);
sBuf.append("&destination=");
sBuf.append(dest.getLatitudeE6()/1E6);
sBuf.append(',');
sBuf.append(dest.getLongitudeE6()/1E6);
sBuf.append("&sensor=true&mode=driving");
parser = new GoogleParser(sBuf.toString());
Route r =  parser.parse();
return r;
 }

LogCat 输出:

 11-23 16:07:50.126: E/AndroidRuntime(24124): FATAL EXCEPTION: main
 11-23 16:07:50.126: E/AndroidRuntime(24124): java.util.NoSuchElementException
 11-23 16:07:50.126: E/AndroidRuntime(24124):   at      java.util.ArrayList$ArrayListIterator.next(ArrayList.java:572)
   11-23 16:07:50.126: E/AndroidRuntime(24124):     at         com.xxx.xxx.xxx.RouteOverlay.redrawPath(RouteOverlay.java:90)
  11-23 16:07:50.126: E/AndroidRuntime(24124):  at    com.xxx.xxx.xxx.RouteOverlay.draw(RouteOverlay.java:60)
 11-23 16:07:50.126: E/AndroidRuntime(24124):   at   com.google.android.maps.Overlay.draw(Overlay.java:179)
 11-23 16:07:50.126: E/AndroidRuntime(24124):   at 

等等...

线路错误(RouteOverlay.java):

             prj.toPixels(it.next(), p);

关于:

 private void redrawPath(final MapView mv) {
        final Projection prj = mv.getProjection();
        path.rewind();
        final Iterator<GeoPoint> it = routePoints.iterator();
        //Crash Here 
        prj.toPixels(it.next(), p);
        path.moveTo(p.x, p.y);
        while (it.hasNext()) {
                prj.toPixels(it.next(), p);
                path.lineTo(p.x, p.y);
        }
        path.setLastPoint(p.x, p.y);
}

谢谢。

最佳答案

似乎发生了一些变化,您现在没有获得任何积分?要修复崩溃,请使您的方法更加健壮:

  if (it.hasNext()) {
    prj.toPixels(it.next(), p);
    path.moveTo(p.x, p.y);
    while (it.hasNext()) {
            prj.toPixels(it.next(), p);
            path.lineTo(p.x, p.y);
    }
    path.setLastPoint(p.x, p.y);
  }

但不确定为什么数组现在是空的。

关于java - 仅在 Google map 上显示行程(Xml 格式?,2012),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13531935/

相关文章:

java - Scala 在 Android 上的性能好吗? (2011 年 6 月)

android - Android 示例中的上下文问题 "Google Map View"

java - 匹配字符串第一次出现的位置

java - 如何在两次调用 Controller 方法之间保留数据?

android - "if the device is connected to GCM"是什么意思

java - 修改 AndroidManifest.xml 中的 intent-filter 导致应用无法使用 adb 安装

java - 来自相同基本代码的多个 war 文件,Gradle

java - Java 中是否有固定大小的 Deque 可以删除旧元素?

google-maps - 将邮政编码作为值传递给地址参数时,Google Maps API 地理编码不返回结果

javascript - 谷歌地图 : render map based on street address