Frage

Auf Android 1.0 gab es einen com.google.googlenav Namespace für Anfahrts:
Route - Verbesserte Google Directions
Fahr Aber in neuerer SDK wurde es aus irgendeinem Grunde entfernt ...
Android: DrivingDirections entfernt, da API 1.0 - wie es zu tun in 1.5 / 1.6 Auf Blackberry gibt es auch Mangel an APIs für solche Sachen:
wie die Strecke zwischen zwei Orten in Blackberry zu finden?

CSIE-tw gibt eine Abhilfe (Abfrage gmaps für KML-Datei und analysieren es):
Android - Fahrtrichtung (Route-Pfad)
Auch Andrea einen DrivingDirections Helferklassen für Android.
Ich schrieb einen kleinen Helfer für diese Funktionalität, in J2ME, so mag ich meine Proben auf Android und Blackberry teilen.

UPDATE
Wie es in den Kommentaren erwähnt wurde, ist es nicht offiziell Google Maps APIs Nutzungsbedingungen erlaubt :

  

Google Maps / Google Earth-APIs Nutzungsbedingungen
  Zuletzt aktualisiert am: 27. Mai 2009
  ...
  10. Lizenzbeschränkungen. Soweit nicht ausdrücklich unter den Nutzungsbedingungen gestattet, oder, wenn Sie die vorherigen schriftliche Genehmigung von Google erhalten haben (oder, soweit zutreffend, von dem Anbieter von bestimmtem Inhalt), Googles oben Lizenzen unterliegen Ihre Einhaltung aller folgenden Einschränkungen. Außer wie in Abschnitt 7 oder Maps-APIs-Dokumentation ausdrücklich erlaubt, müssen Sie nicht (noch dürfen erlauben Sie jemand anderes):
  ...
  10.9 verwenden den Dienst oder Inhalt mit Produkten, Systemen oder Anwendungen für oder in Verbindung mit:
  (A) Echtzeit-Navigation oder Routenführung, einschließlich, aber nicht beschränkt auf Turn-by-Turn-Routenführung, die auf die Position eines Benutzers Sensor-fähiges Geräts synchronisiert ist;

und kann für bestimmte Anwendungen (irgendwie, zumindest auf Android) ... Von Geocode in .NET Gespräch Schaben:

  

Dies ist nicht durch die API Nutzungsbedingungen erlaubt. Sie sollten nicht kratzen   Google Maps Geocodes zu erzeugen. Wir werden Dienste blockieren, tun   automatisierte Abfragen unserer Server.

     

Bret Taylor
  Product Manager, Google Maps

Wäre dankbar für alle Alternativen und / oder Anregungen!
Dank!

War es hilfreich?

Lösung

J2ME Karte Routen Provider

maps.google.com hat einen Navigationsdienst, die Sie Routeninformationen zur Verfügung stellen kann in RoadProvider.java

Blackberry

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;
    }
}

Siehe vollständigen Code auf J2MEMapRouteBlackBerryEx auf Google Code

Android

Android G1 Screenshot

public class MapRouteActivity extends MapActivity {
    LinearLayout linearLayout;
    MapView mapView;
    private Road mRoad;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        mapView = (MapView) findViewById(R.id.mapview);
        mapView.setBuiltInZoomControls(true);
        new Thread() {
            @Override
            public void run() {
                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);
                mHandler.sendEmptyMessage(0);
            }
        }.start();
    }

    Handler mHandler = new Handler() {
        public void handleMessage(android.os.Message msg) {
            TextView textView = (TextView) findViewById(R.id.description);
            textView.setText(mRoad.mName + " " + mRoad.mDescription);
            MapOverlay mapOverlay = new MapOverlay(mRoad, mapView);
            List<Overlay> listOfOverlays = mapView.getOverlays();
            listOfOverlays.clear();
            listOfOverlays.add(mapOverlay);
            mapView.invalidate();
        };
    };

    private InputStream getConnection(String url) {
        InputStream is = null;
        try {
            URLConnection conn = new URL(url).openConnection();
            is = conn.getInputStream();
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return is;
    }
    @Override
    protected boolean isRouteDisplayed() {
        return false;
    }
}

Siehe vollständigen Code auf J2MEMapRouteAndroidEx auf Google Code

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top