【问题标题】:Drawing path using Json使用Json绘制路径
【发布时间】:2013-01-04 14:00:41
【问题描述】:

我指的是这个post

我遇到了一个异常,所以我尝试像 post 中的最后一个答案一样使用 AsyncTask .现在应用程序正在运行,没有任何异常,但它没有绘制路径。不知道是什么问题。

这里是代码:http://www.mediafire.com/?lxm7gplzsfdtsx5 我只是用下面的 MainActivity.java 替换 itineraire.java

public class MainActivity extends MapActivity {

MapView mapView = null;
MapController mapController;
double long1 = 50.123*1E6;
double lati1 = 13.123*1E6;
double long2 = 50.221*1E6;
double lati2 = 13.221*1E6;
GeoPoint start, dest;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_itineraire);
    mapView = (MapView) findViewById(R.id.mapView);
    mapView.setBuiltInZoomControls(true);


     DirectionsTask getDirectionsTask = new DirectionsTask();
     getDirectionsTask.execute(new GeoPoint((int)(long1),(int)(lati1)), new GeoPoint((int)(long2),(int)(lati2)));



 }

private class DirectionsTask extends AsyncTask<GeoPoint, Void, Route> {

protected Route doInBackground(GeoPoint...geoPoints) {
    start = geoPoints[0];
    dest =  geoPoints[1];

       Parser parser;
        String jsonURL = "http://maps.google.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");
        Log.v("I came in URL", sBuf.toString());
        parser = new GoogleParser(sBuf.toString());
        Route r =  parser.parse();
        return r;
}




 protected void onPostExecute(Route route) {
    RouteOverlay routeOverlay = new RouteOverlay(route, Color.BLUE);
    mapView.getOverlays().add(routeOverlay);
    mapView.invalidate();
    mapController = mapView.getController();
    mapController.setZoom(14);
    mapView.getMapCenter();
}

}

@Override
protected boolean isRouteDisplayed() {
// TODO Auto-generated method stub
return false;
}
}

【问题讨论】:

    标签: android json google-maps


    【解决方案1】:

    您的路线已绘制在地图上,但如果您移动地图,您会发现路线已绘制在屏幕外,我建议您使用新的 Maps API,它可以更好、更轻松地在地图上绘制路线.

    您可以使用当前实现 mapView.getController().zoomToSpan((int)lati1,(int)long1); 将您的地图居中到该给定点

    【讨论】:

    • 我更改了 Map API 并添加了这一行。那么如何在屏幕上获取路线?
    • 查看此链接,它将向您展示如何在地图上绘制一条线 developers.google.com/maps/documentation/android/lines ,不需要叠加,只需创建折线并将其添加到地图中,如所述。跨度>
    • 非常感谢,我正在尝试这个
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-16
    • 2012-09-13
    • 1970-01-01
    • 1970-01-01
    • 2017-12-15
    相关资源
    最近更新 更多