0

マップビューに2つのジオポイント間のルートを表示したいのですが、実行すると、マップビューに常に白い画面が表示されます。このリンクの例を参考に使用します

これが私のMapActivityクラスです:

public class M_hospital_map extends MapActivity {

 // Map view
 MapView mapView = null;

 GeoPoint geoPoint;
 GeoPoint dest_geoPoint;

 // Progress dialog
 ProgressDialog pDialog;

 // Map controllers
 MapController mapController;

 GeoPoint start, dest;

 double latitude;
 double longitude;
 double dest_latitude;
 double dest_longitude;

 OverlayItem overlayitem;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.m_hospital_map);

    // Getting intent data
    Intent i = getIntent();

    Bundle bundle = i.getExtras();

    // get all data from bundle
    double user_latitude = bundle.getDouble("user_latitude");
    double user_longitude = bundle.getDouble("user_longitude");
    double dest_latitude = bundle.getDouble("dest_latitude");
    double dest_longitude = bundle.getDouble("dest_longitude");


    mapView = (MapView) findViewById(R.id.mapView); 
    mapView.setBuiltInZoomControls(true);



    DirectionsTask getDirectionsTask = new DirectionsTask();
    getDirectionsTask.execute(new GeoPoint((int)(user_latitude * 1E6),(int)(user_longitude * 1E6)),
                  new GeoPoint((int)(dest_latitude * 1E6),(int)(dest_longitude * 1E6)));

 }

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

    protected void onPreExecute() {
        super.onPreExecute();
        pDialog = new ProgressDialog(M_hospital_map.this);
        pDialog.setMessage(Html.fromHtml("<b>Google Map</b><br/>Loading Route..."));
        pDialog.setIndeterminate(false);
        pDialog.setCancelable(false);
        pDialog.show();
    }

        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("URL", sBuf.toString());

                parser = new GoogleParser(sBuf.toString());
                Route r =  parser.parse();
                return r;
        }

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

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

そして、私のm_hospital_map.xmlは次のようになります。

<?xml version="1.0" encoding="utf-8"?>
<com.google.android.maps.MapView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/mapView"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:clickable="true"
    android:apiKey="0WM32EymVRmIVGz-fKJhPs2BT_sH1CZtV3QG54w"
/>

そして、私はすでにINTERNET、ACCESS_FINE_LOCATION、ACCESS_COARSE_LOCATION権限を使用しています。上記のコードの何が問題になっているのか教えてください。

4

1 に答える 1

0

最近では Google が SHA1 フィンガープリントのキーを作成するため、MD5 フィンガープリントのキーがあることを確認してください。MapView で SHA1 フィンガープリントで作成されたキーを使用すると機能しません。

于 2013-01-09T09:31:22.150 に答える