2011-10-26, 22:11
  #1
Medlem
Idde89s avatar
Tjena! Håller på med en app. Har stött på ett litet problem, Just nu har jag ritat ut en cirkel som sitter fast på skärmens pixlar, dvs den följer alltid med var man än navigerar sig på kartan. Nu vill jag istället att cirkeln ska sätta sig fast i en punkt på kartan, dvs vid en angiven longitud och latitud. Så att man kan markera ett område på kartan.

Den lilla kod som jag använde mig utav för att sätta fast cirkeln på skärmens pixlar:
Kod:
public class myOverlay extends Overlay {
//     .
//     .
//    private final Context context;
    
public overlay(Context context) {
        
this.context context;    
    }
//     .
//     .
//Metoden där jag ritar ut cirkeln
  
public boolean draw(Canvas canvasMapView mapViewboolean shadowlong when) {
        
super.draw(canvasmapViewshadow);                   
        
Point pixCenter = new Point();
        
Projection proj =  mapView.getProjection();
       
pixCenter projtoPixels(mapView.getMapCenter(), pixCenter);

        
Paint pixelPaint = new Paint();
        
pixelPaint.setARGB(3500255);
        
pixelPaint.setAntiAlias(true);
        
pixelPaint.setStyle(Style.FILL_AND_STROKE);
        
canvas.drawCircle(mapView.getWidth()/2mapView.getHeight()/2radiuspixelPaint); //Här lägger jag till cirkeln
        
return true;
    }



Koden nedan visar MapActivity klassen där jag lägger cirkeln
Kod:
public class newLocation extends MapActivity {
//     .
//     .
private MapView mapView;
private 
myOverlay oLay//Klassen som jag visade ovan
//     .
//     .
public void onCreate(Bundle savedInstanceState) {
        
super.onCreate(savedInstanceState);
        
setup_map(); // En metod jag skapat längre ner i klassen som gör så att kartan dyker upp 
        
oLay = new myOverlay(this);
        
mapView.getOverlays.add(oLay);
    }
//     .
//     .
//Övriga metoder
//     .
//     .



Som sagt det som utförs med dessa två klasser är att jag addar en cirkel på en pixelpunkt som ligger i mitten utav kartan. Jag vill nu även genom ett knapptryck kunna sätta fast cirklen på kartan (Geo point) istället för pixlen. Steg ett är att omvandla den pixelpunkt cirkeln sitter fast i till Geo point, detta gör jag genom dessa två rader:
Kod:
long latitude proj.fromPixels(mapView.getWidth()/2mapView.getHeight()/2).getLatitudeE6();
long longitude proj.fromPixels(mapView.getWidth()/2mapView.getHeight()/2).getLongitudeE6(); 

Men hur använder jag mig utav dessa två punkter för att sätta fast cirklen på kartan, har googlat en hel del på det men hittar inget.

All hjälp uppskattas, tack på förhand
Citera
2011-10-27, 16:22
  #2
Medlem
Idde89s avatar
Ingen?
Citera
2011-11-16, 20:48
  #3
Medlem
Har du löst problemet?

Tror du kan skapa en ny GeoPoint med

GeoPoint newgp = new GeoPoint(latitude, longitude);

Dock ska dina lat/long vara int

Sedan köra

Point newpoint = projection.toPixels(newgp, NULL);

för att få ut punkten i X,Y.
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in