2013-05-08 13 views
8

Hintergrund:Android Maps API Version 1 auf Version 2 Migrationen

ich jemand anderes Problem geerbt haben und ich versuche, eine App zum Laufen zu bekommen. Mehrere Entwickler haben das Projekt aufgegeben und jetzt bin ich an der Reihe. Ich bin ein iOS-Entwickler von Beruf, aber ich habe ein paar einfache Android-Projekt abgeschlossen.

Die Problem-App ist eine native Android ursprünglich mit API-Level 7 gebaut und ist stark um Google Maps API Version 1 gebaut. Ich habe keinen Zugriff auf die Original-Schlüssel, so dass ich gezwungen, auf Google Maps zu aktualisieren Version 2.

Ich habe bereits eine neue Aktivität eingerichtet und bin über die grundlegenden Tutorials hinaus, um eine funktionierende Karte zu bekommen. Keine Probleme dort, aber ich bin auf Elemente wie GeoPoint blockiert und scheint nicht in der Lage zu finden, viele Informationen über seine Ersetzung zu finden.

Meine Frage lautet:

Gibt es einen Migrationspfad von API-Version 1 bis API-Version 2 zu bewegen oder muss ich neu Code die ganze Karte Komponente? GeoPoints, benutzerdefinierte Pins und Overlays enthalten?

Antwort

12

Die traurige Antwort ist, dass die meisten Objekte von Google Map API V1 durch neue Objekte in Google Map API V2 ersetzt werden.

Zum Beispiel statt GeoPoints verwenden Sie Latlng Punkte. Overlays sind auch weg und ersetzt mit Polylines und Polygones.

Werfen Sie einen Blick auf diese Antwort gab ich hier:

Convert Android App that uses maps API V1 to Maps Android API V2

Und haben einen Blick auf diesen Blog-Post schrieb ich, dass werden Sie mit Google Map API V2 Implementierung in Ihrer Anwendung erhalten begonnen:

Google Map API V2

So wie Sie verstehen, sollte der Großteil des Codes neu geschrieben werden, um Google Map API V2 zu passen.

+1

+1 auf die schlechten Nachrichten. Die Migration von v1 auf v2 ist ein großes Unterfangen. Glücklicherweise sind viele Dinge, die in v1 schwierig waren, in v2 einfach. –

+2

Emil, ich war in den letzten Tagen ein häufiger Besucher auf deinem Blog. Danke von einem zufälligen Internet-Typen. – warpedspeed

+0

@warpspeed, Sie sind willkommen. Wenn Sie weitere Fragen haben, können Sie diese hier oder im Blog veröffentlichen. –

0

Wann v2 des Maps-API für Android zu bewegen, werden Sie sofort bemerken, dass dies auf der Abwärtskompatibilität eine völlig neue API mit sehr wenig Rücksicht ist.

Sie werden eine Menge von der Kompilierung Fehler sehen, wie viele der bestehenden Klassen werden nun wie MapActivity, GeoPoint, RecticleDrawMode und Overlay fehlen. Die neuen Objekte sind alle im com.google.android.gms.maps. * Paket enthalten.

  • Benutzer Lage

Android Karten v1

In Karten v1 wurde die MyLocationOverlay verwendet, um dem Benutzer Standort

List overlaysoverlays = mapView.getOverlays(); 
MyLocationOverlay myLocationOverlay = new MyLocationOverlay(this, mapView); 
myLocationOverlay.enableMyLocation(); 
overlays.add(myLocationOverlay); 

Android Karten v2 zu erkennen

Sie zeigen eine Mein Standort-Taste auf der Karte aktivieren sehr leicht wie folgt aus:

googleMap.setMyLocationEnabled(true); 

Die Mein Standort Taste erscheint in der oberen rechten Ecke des Bildschirms nur, wenn die My Location Schicht aktiviert ist. Wenn ein Benutzer auf die Schaltfläche klickt, animiert die Kamera, sich auf den aktuellen Standort des Benutzers zu konzentrieren, wenn der Standort des Benutzers derzeit bekannt ist.

  • Hervorhebungen Marker

Hervorhebungen Marker ist sehr einfach geworden. Das Ändern des Markierungssymbols wurde zu einem Einzeiler.

Android Karten v1

private void highlightMarker(int index) { 
Drawable d = getResources().getDrawable(R.drawable.pin_green); 
Rect copyBounds = overlay.getMarker(0).copyBounds(); 
d.setBounds(copyBounds); 
overlay.setMarker(d); 
SitesOverlay sitesOverlay = (SitesOverlay) map.getOverlays().get(0); 
sitesOverlay.refresh(); 
} 

Android Karten v2

private void highLightMarker(int index) { 
Marker marker = markers.get(index)) 
marker.setIcon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE)); 
} 

Weitere Schritte check this tutorial