J2ME / Android / BlackBerry – Wegbeschreibung, Route zwischen zwei Standorten

Auf Android 1.0 gab es einen com.google.googlenav Namespace für Fahranweisungen:
Route – Verbesserte Google Fahranweisung
Aber in neueren SDK wurde es aus irgendeinem Grund entfernt …
Android: DrivingDirections entfernt seit API 1.0 – wie man es in 1.5 / 1.6 tun? Auf BlackBerry gibt es auch Mangel an APIs für solche Sachen:
Wie finde ich die Route zwischen zwei Orten in Blackberry?

Csie-tw gibt einen Workaround (Abfrage gmaps für kml-Datei und analysieren):
Android – Fahrrichtung (Streckenweg)
Auch Andrea machte einen DrivingDirections Helper Klassen für Android.
Ich schrieb ein wenig Helfer für diese Funktionalität, in j2me, also möchte ich meine Samples auf Android und BlackBerry teilen.

  • Fehler beim Abrufen der URL https://dl-ssl.google.com/android/repository/addons_list-1.xml, Grund: Verbindung zu https://dl-ssl.google.com abgelehnt
  • Ist es möglich, einen Download abzubrechen / zu stoppen, der mit DownloadManager gestartet wurde?
  • Teilweise Aktualisierung von RecyclerView.ViewHolder
  • Erstellen Sie SSL-Socket auf Android mit selbst signiertem Zertifikat
  • "Lass den Dolch-Prozessor über diese Klasse stattdessen laufen" in Kotlin
  • Wie benutzt man den ProGuard in Android Studio?
  • AKTUALISIEREN
    Wie es in den Kommentaren angegeben wurde, ist es nicht offiziell erlaubt Google Maps APIs Nutzungsbedingungen :

    Google Maps / Google Earth APIs Nutzungsbedingungen
    Letzte Aktualisierung: 27. Mai 2009

    10. Lizenzbeschränkungen. Soweit nicht ausdrücklich gestattet, oder wenn Sie eine vorherige schriftliche Genehmigung von Google (oder ggf. vom Anbieter von bestimmten Inhalten) erhalten haben, unterliegen die oben genannten Google-Lizenzen Ihrer Einhaltung aller nachfolgenden Beschränkungen. Sofern nicht ausdrücklich in Abschnitt 7 oder der Maps APIs Dokumentation erlaubt ist, darf man (darf auch niemandem erlauben):

    10.9 nutzen Sie den Service oder den 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 eine Turn-by-Turn-Routenführung, die mit der Position der Sensor-fähigen Vorrichtung eines Benutzers synchronisiert ist;

    Und kann für bestimmte Apps deaktiviert werden (irgendwie, zumindest auf Android) … Von Geocode Scraping in .NET-Konversation :

    Dies ist von den Nutzungsbedingungen der API nicht erlaubt. Du sollst nicht Google Maps kratzen, um Geocodes zu erzeugen. Wir werden Dienste blockieren, die automatisierte Abfragen unserer Server durchführen.

    Bret Taylor
    Produktmanager, Google Maps

    Wäre dankbar für alle Alternativen und / oder Vorschläge!
    Vielen Dank!

  • Android Galaxy S4 - Aktivität, die über Sperrbildschirm sichtbar ist
  • Android CountDownTimer zeigt 1 für zwei Sekunden
  • Nicht unterstützte Methode: AndroidProject.getPluginGeneration () beim Ausführen von Projekt
  • Erzeugen und Installieren von SSL-Zertifikaten
  • Position der Ansicht in onCreateViewHolder
  • Kann ich gewisse Effizienz gewinnen, indem ich entsprechende Mitglieder "statisch" in Android Activity erkläre
  • One Solution collect form web for “J2ME / Android / BlackBerry – Wegbeschreibung, Route zwischen zwei Standorten”

    J2ME Map Route Provider

    Maps.google.com hat einen Navigationsdienst, der Ihnen Routeninformationen im KML- Format zur Verfügung stellt.

    Um die kml-Datei zu erhalten, müssen wir mit Start- und Zielorten eine URL erstellen:

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

    Als nächstes musst du xml (mit SAXParser implementiert) analysieren und Datenstrukturen füllen:

     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[] {}; } 

    Netzwerk-Verbindung ist in unterschiedlicher Weise auf Android und Blackberry implementiert, so müssen Sie zuerst urablieren:

      public static String getUrl(double fromLat, double fromLon, double toLat, double toLon) 

    Dann schaffen Sie eine Verbindung mit dieser URL und erhalten Sie InputStream.
    Dann passiere diese InputStream und bekomme geparste Datenstruktur:

      public static Road getRoute(InputStream is) 

    Voller Quellcode RoadProvider.java

    Brombeere

    Dead Link – BlackBerry Storm Screenshot

     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

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.