Jetzt kostenlos registrieren. Mitglieder surfen ohne Werbung auf Android-Hilfe.de!
Zurück   Android-Hilfe.de > Android Developer > Android App Entwicklung

GeoPoint.toPixel - Werte

Das Thema "GeoPoint.toPixel - Werte" befindet sich unter Android App Entwicklung auf Android-Hilfe.de.


Antwort

 

Themen-Optionen Ansicht
Alt 17.05.2011, 18:31   #1 (permalink)
Neuer Benutzer

Registriert seit: 13.05.2011
Beiträge: 13
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
Standard GeoPoint.toPixel - Werte

Hallo

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

Zitat:

GeoPoint gP1 = new GeoPoint((int) lat, (int) lng);

lat += 0.03*1E6;
lng += 0.03*1E6;

GeoPoint gP2 = new GeoPoint((int) lat, (int) lng);
projection.toPixels(gP1, p1);
projection.toPixels(gP2, p2);

canvas.drawLine(p1.x, p1.y,p2.x, p2.y, mPaint);

Log.e("Punkte", p1.x +" "+ p1.y + " " + p2.x + " " + p2.y );

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

Zitat:
05-17 18:28:33.981: ERROR/Punkte(16040): 82 66 96 43

05-17 18:28:41.791: ERROR/Punkte(16040): 242 281 256 258

05-17 18:29:06.421: ERROR/Punkte(16040): 322 201 336 178
Aber kein Punkt stimmt mit den von mir vorgezeichneten Images überein.
Was mach ich nur falsch ?
nebuto ist offline   Mit Zitat antworten
Alt 17.05.2011, 22:53   #2 (permalink)
Neuer Benutzer

Modell: HTC Desire HD

Registriert seit: 27.12.2010
Beiträge: 20
Abgegebene Danke: 4
Erhielt 0 Danke für 0 Beiträge
Standard AW: GeoPoint.toPixel - Werte

Hm, evtl. hilft es, wenn du mehr von dem Code zeigst...
__________________
Gruß Oli - Follow me on Twitter
ChemDroid ist offline   Mit Zitat antworten
Alt 17.05.2011, 23:26   #3 (permalink)
Neuer Benutzer

Registriert seit: 13.05.2011
Beiträge: 13
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
Standard AW: GeoPoint.toPixel - Werte

hier ist meine mapTestAct.java

Zitat:
package com.mapper;

import java.util.ArrayList;
import java.util.List;

import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.Point;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;

import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapView;
import com.google.android.maps.OverlayItem;
import com.google.android.maps.Projection;
import com.google.android.maps.Overlay;


public class mapTestAct extends MapActivity {
/** Called when the activity is first created. */

private MapView mapView;
private ArrayList<OverlayItem> gpsOverlay = new ArrayList<OverlayItem>();
private GeoPoint point;
List<Overlay> mapOverlays;
Drawable drawable;
HelloItemizedOverlay itemizedOverlay;
OverlayItem overlayitem;
private Projection projection;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

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

mapOverlays = mapView.getOverlays();

drawable = this.getResources().getDrawable(R.drawable.android marker);
itemizedOverlay = new HelloItemizedOverlay(drawable);

projection = mapView.getProjection();

double lat = 50.742400*1E6;
double lng = 7.118600*1E6;

for (int i = 0; i < 4; i++)
{
point = new GeoPoint((int)lat, (int) lng);
overlayitem = new OverlayItem(point, "", "");

gpsOverlay.add(new OverlayItem(point, "", ""));

lng += 0.03*1E6;
lat += 0.03*1E6;
}

for (OverlayItem oi: gpsOverlay)
itemizedOverlay.addOverlay(oi);

mapOverlays.add(itemizedOverlay);
mapOverlays.add(new MyOverlay());

}

class MyOverlay extends Overlay{

private Paint mPaint;
private Point p1 = new Point();
private Point p2 = new Point();

private double lat = 50.742400*1E6;
private double lng = 7.118600*1E6;

public MyOverlay()
{
GeoPoint gP1 = new GeoPoint((int) lat, (int) lng);

lat += 0.03*1E6;
lng += 0.03*1E6;

GeoPoint gP2 = new GeoPoint((int) lat, (int) lng);
projection.toPixels(gP1, p1);
projection.toPixels(gP2, p2);

}

public void draw(Canvas canvas, MapView mapv, boolean shadow){
super.draw(canvas, mapv, shadow);

mPaint = new Paint();
mPaint.setDither(true);
mPaint.setColor(Color.RED);
mPaint.setStyle(Paint.Style.FILL_AND_STROKE);
mPaint.setStrokeWidth(3);

canvas.drawLine(p1.x, p1.y,p2.x, p2.y, mPaint);
Log.e("Punkte", p1.x +" "+ p1.y + " " + p2.x + " " + p2.y );

}
}


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

Geändert von nebuto (17.05.2011 um 23:34 Uhr)
nebuto ist offline   Mit Zitat antworten
Alt 19.05.2011, 06:53   #4 (permalink)
Neuer Benutzer

Modell: HTC Desire HD

Registriert seit: 27.12.2010
Beiträge: 20
Abgegebene Danke: 4
Erhielt 0 Danke für 0 Beiträge
Standard AW: GeoPoint.toPixel - Werte

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.
__________________
Gruß Oli - Follow me on Twitter
ChemDroid ist offline   Mit Zitat antworten
Alt 19.05.2011, 14:52   #5 (permalink)
Neuer Benutzer

Registriert seit: 13.05.2011
Beiträge: 13
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
Standard AW: GeoPoint.toPixel - Werte

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 ?
nebuto ist offline   Mit Zitat antworten
Alt 19.05.2011, 15:30   #6 (permalink)
Neuer Benutzer

Modell: HTC Desire HD

Registriert seit: 27.12.2010
Beiträge: 20
Abgegebene Danke: 4
Erhielt 0 Danke für 0 Beiträge
Standard AW: GeoPoint.toPixel - Werte

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
__________________
Gruß Oli - Follow me on Twitter
ChemDroid ist offline   Mit Zitat antworten
Alt 20.05.2011, 18:54   #7 (permalink)
Neuer Benutzer

Registriert seit: 13.05.2011
Beiträge: 13
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
Standard AW: GeoPoint.toPixel - Werte

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 ?
nebuto ist offline   Mit Zitat antworten
Alt 20.05.2011, 19:02   #8 (permalink)
Neuer Benutzer

Modell: HTC Desire HD

Registriert seit: 27.12.2010
Beiträge: 20
Abgegebene Danke: 4
Erhielt 0 Danke für 0 Beiträge
Standard AW: GeoPoint.toPixel - Werte

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.
__________________
Gruß Oli - Follow me on Twitter
ChemDroid ist offline   Mit Zitat antworten
Alt 20.05.2011, 20:25   #9 (permalink)
Neuer Benutzer

Registriert seit: 13.05.2011
Beiträge: 13
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
Standard AW: GeoPoint.toPixel - Werte

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.
nebuto ist offline   Mit Zitat antworten
Alt 20.05.2011, 20:54   #10 (permalink)
Neuer Benutzer

Modell: HTC Desire HD

Registriert seit: 27.12.2010
Beiträge: 20
Abgegebene Danke: 4
Erhielt 0 Danke für 0 Beiträge
Standard AW: GeoPoint.toPixel - Werte

Triviale Frage: Internetverbindung vorhanden?
__________________
Gruß Oli - Follow me on Twitter
ChemDroid ist offline   Mit Zitat antworten
Antwort

Stichworte
-

Themen-Optionen
Ansicht


Ähnliche Themen

Thema Autor Forum Antworten Letzter Beitrag
Autodimmer Werte verändern pajonk Root / Hacking / Modding für LG Optimus Speed 4 21.04.2011 09:18
Statistikprogramme / unterschiedliche Werte dabayer Sonstige Apps & Widgets 5 24.12.2010 00:54
CustomDialog -> Werte übergeben Honeypot Android App Entwicklung 1 19.11.2010 10:39
GeoPoint ungenau? HectorSavage Android App Entwicklung 6 22.09.2009 12:51
Stromversorgung G1 - Werte ? Hexxer T-Mobile G1 Forum 6 09.06.2009 17:05




Du liest gerade: "GeoPoint.toPixel - Werte" unter "Android App Entwicklung" auf Android-Hilfe.de.


Powered by vBulletin®
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Search Engine Friendly URLs by vBSEO
© Android-Hilfe.de 2012 - All rights reserved.