1. Nimm jetzt an unserem 2. ADVENT-Gewinnspiel teil - Alle Informationen findest Du hier!

GeoPoint.toPixel - Werte

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von nebuto, 17.05.2011.

  1. nebuto, 17.05.2011 #1
    nebuto

    nebuto Threadstarter Neuer Benutzer

    Beiträge:
    13
    Erhaltene Danke:
    0
    Registriert seit:
    13.05.2011
    Hallo

    Ich versuch die ganze Zeit auf der Map die Verbindung zwischen 2 Geopoints zu zeichnen.

    Der Log Spuckt folgende x,y Werte für p1, p2
    Die sich verändern, wenn ich das Handy drehe.

    Aber kein Punkt stimmt mit den von mir vorgezeichneten Images überein.
    Was mach ich nur falsch ?
     
  2. ChemDroid, 17.05.2011 #2
    ChemDroid

    ChemDroid Gast

    Hm, evtl. hilft es, wenn du mehr von dem Code zeigst...
     
  3. nebuto, 17.05.2011 #3
    nebuto

    nebuto Threadstarter Neuer Benutzer

    Beiträge:
    13
    Erhaltene Danke:
    0
    Registriert seit:
    13.05.2011
    hier ist meine mapTestAct.java

     
    Zuletzt bearbeitet: 17.05.2011
  4. ChemDroid, 19.05.2011 #4
    ChemDroid

    ChemDroid Gast

    Hm, also das Problem ist wohl, dass du in der Zählschleife die Marker mit dem GeoPoint verbindest, wohingegen du die Linie mit der Projection verknüpfst, d.h. du zeichnest einmal auf GeoKoordinaten und einmal auf Bildschirmkoordinaten => die Punkte stimmen nicht überein!

    Du musst natürlich alles, was du zeichnen willst, auf Bildschirmkoordinaten (projection) zeichnen.
     
  5. nebuto, 19.05.2011 #5
    nebuto

    nebuto Threadstarter Neuer Benutzer

    Beiträge:
    13
    Erhaltene Danke:
    0
    Registriert seit:
    13.05.2011
    ja das stimmt wohl ...

    Wenn ich jetzt aber die Geopunkte auch in Bildschirmkoordinaten umwandel, verbindet der zwar die Punkte mit den Linien, aber dann stimmt die Überdeckung mit der Karte nicht mehr.

    Die GPS koordinaten sind aber die richtigen. DH auf der Landkarte zeichne ich an den richtigen Punkten meine Images.

    Gibts denn irgendeinen Weg (ohne Projection) wie ich einfach zwischen 2 GeoPoints ne Linie malen kann ?

    Oder hast du sonst einen Tip ?
     
  6. ChemDroid, 19.05.2011 #6
    ChemDroid

    ChemDroid Gast

    Also so mach ich es in meiner App:

    Die Klasse für die MapOverlays:

    Code:
    static class MapOverlay extends com.google.android.maps.Overlay {
            @Override
            public boolean draw(Canvas canvas, MapView mapView, boolean shadow, long when) {
                super.draw(canvas, mapView, shadow);
                Point screenPoints_currentLoc = new Point();
                Point screenPoints_currentStationLoc = new Point();
                // Geokoordinaten in Bildschirmkoordinaten umwandeln
                mapView.getProjection().toPixels(currentLoc, screenPoints_currentLoc);
                mapView.getProjection().toPixels(currentStationLoc, screenPoints_currentStationLoc);
                // Verbindungslinie zwischen den Orten
                if (showLine) {
                    Paint lineStyle = new Paint();
                    lineStyle.setColor(Color.YELLOW);
                    lineStyle.setStyle(Style.FILL_AND_STROKE);
                    lineStyle.setStrokeWidth(3);
                    canvas.drawLine(screenPoints_currentLoc.x, screenPoints_currentLoc.y, screenPoints_currentStationLoc.x, screenPoints_currentStationLoc.y, lineStyle);
                }
                // Marker erstellen
                Bitmap currentLocMarker = BitmapFactory.decodeResource(res, R.drawable.gmarker_green);
                Bitmap currentStationLocMarker = BitmapFactory.decodeResource(res, R.drawable.gmarker_red);
                // Marker setzen
                canvas.drawBitmap(currentLocMarker, screenPoints_currentLoc.x - halfPicWidth, screenPoints_currentLoc.y - PicHeight, null);
                canvas.drawBitmap(currentStationLocMarker, screenPoints_currentStationLoc.x - halfPicWidth, screenPoints_currentStationLoc.y - PicHeight, null);
                return true;
            }
        }
    Und hier der Aufruf im Programmablauf:

    Code:
                    MapOverlay markers = new MapOverlay();
                    List<Overlay> listOfMarkers = mapView.getOverlays();
                    listOfMarkers.clear();
                    listOfMarkers.add(markers);
    Vielleicht hilft dir das ja ;)
     
  7. nebuto, 20.05.2011 #7
    nebuto

    nebuto Threadstarter Neuer Benutzer

    Beiträge:
    13
    Erhaltene Danke:
    0
    Registriert seit:
    13.05.2011
    hey danke !

    Das läuft einwandfrei ;-)
    Jetzt komm ich endlich weiter mit dem Projekt.

    Hab noch eine Frage und hoffe die ist nicht zu dumm.
    Ich hab seit gestern ein neues Netbook und hab da auch Eclipse und Android installiert.
    Hab mittels AndroidDeviceManager sämtliche Pakete und APIs installiert.
    Mein anderes Projekt läst sich auch einfach auschecken.

    Hab bei meinem Projekt auch Google API 3.1 aktiviert anstatt Android.

    Wenn ich jetzt allerdings vom Netbook auschecke, dann bekomm ich nur ein Gitternetz.
    Muss ich für das Netbook wieder einen neuen API-Key besorgen, oder kann ich sonst noch was vergessen haben ?
     
  8. ChemDroid, 20.05.2011 #8
    ChemDroid

    ChemDroid Gast

    Hm, also der API-Key ist soweit ich weiß mit deinem Zertifikat verknüpft, mit der du deine App signierst.
    Wichtig ist, dass du 2 API-Keys besitzt, einen für deine fertige apk (die dann mit deinem Zertifikat signiert wird für den Market) und einen für das debuggen (für die apk die dann mit dem Debug-Zertifikat signiert wird).

    Evtl. mal schauen, ob du in beiden Fällen das gleiche Prozedere vollziehst.
     
  9. nebuto, 20.05.2011 #9
    nebuto

    nebuto Threadstarter Neuer Benutzer

    Beiträge:
    13
    Erhaltene Danke:
    0
    Registriert seit:
    13.05.2011
    An fertige APK ist erstmal nicht zu denken, weil das Projekt noch ein paar Monate dauern wird.
    Aber der debug API-Key sollte auf mehreren Rechnern funktionieren oder nicht ?
    Ich arbeite mit SVN und sobald ich die APK von meinem Netbook aus auf meinem Handy teste, zeigt er mir keine Karten, sondern nur ein Gittermuster an.
     
  10. ChemDroid, 20.05.2011 #10
    ChemDroid

    ChemDroid Gast

    Triviale Frage: Internetverbindung vorhanden?
     
  11. nebuto, 20.05.2011 #11
    nebuto

    nebuto Threadstarter Neuer Benutzer

    Beiträge:
    13
    Erhaltene Danke:
    0
    Registriert seit:
    13.05.2011
    Jau internet hat das Handy und das Netbook auch.
     
  12. nebuto, 24.05.2011 #12
    nebuto

    nebuto Threadstarter Neuer Benutzer

    Beiträge:
    13
    Erhaltene Danke:
    0
    Registriert seit:
    13.05.2011
    irgendjemand ne Idee ?

    is halt blöde, da ich jetzt weiterhin mit dem Laptop unterwegs sein muss, und mein neues Netbook zu Hause verstaubt :-o

    das Projekt ist auf beiden Rechnern 1 zu 1 das selbe.
    Wurde importiert über SVN.
    Haben auch den gleichen API Key (braucht jeder Rechner nen eigenen ?)

    Auf beiden ist beim Project als Target Google API 3.1 Level 12 eingestellt.
    Wenn ich die App über den Laptop am Handy teste, dann sind die Karten da, wenn ich das über das Netbook mache, dann hab ich nur ein Gittermuster, aber ansonsten läuft die App.
     
  13. ChemDroid, 24.05.2011 #13
    ChemDroid

    ChemDroid Gast

    Haha was mir grad dazu einfällt: das Debug Zertifikat ist mit Sicherheit nicht bei jeder Installation von Eclipse der gleiche! Also brauchste wohl noch nen API Key für das Debug Zertifikat der Netbook Installation.

    Hätt ich auch mal früher drauf kommen können -.-
     
  14. nebuto, 24.05.2011 #14
    nebuto

    nebuto Threadstarter Neuer Benutzer

    Beiträge:
    13
    Erhaltene Danke:
    0
    Registriert seit:
    13.05.2011
    alles klar ! Vielen Dank ChemDroid.

    Hab jetzt nen 2. Key und jetzt läuft erstml wieder alles wie gewünscht :)
    Echt blöde, dass man immer die Keys tauschen muss, aber hauptsache es läuft jetzt.

    Muchas Gracias nochmal und bis zum nächsten Problem ;-)
     

Diese Seite empfehlen