2010-12-15 14 views

Odpowiedz

13

W przypadku długich kliknięć sugeruję wypróbowanie http://www.kind-kristiansen.no/2010/handling-longpresslongclick-in-mapactivity/. Będzie to dotyczyło szczegółowego sposobu nasłuchiwania zdarzeń z długim kliknięciem w interfejsie API Map Google, ponieważ jest mało lub nie ma żadnych wbudowanych funkcji, które znam.

Jeśli chodzi o kod lat/lng, po długim kliknięciu można przetłumaczyć piksele na współrzędne.

public void recieveLongClick(MotionEvent ev) 
{ 
    Projection p = mapView.getProjection(); 
    GeoPoint geoPoint = p.fromPixels((int) ev.getX(), (int) ev.getY()); 
    // You can now pull lat/lng from geoPoint 
} 
+3

link w tym punkty odpowiedź na blogu pisałem jakiś czas temu. Właśnie napisałem nowy post z rozwiązaniem, które jest czystsze i działa lepiej. Może to być interesujące: http://www.kind-kristiansen.no/2011/android-handling-longpresslongclick-on-map-revisited/ – rogerkk

4

Będziesz musiał zarządzać zdarzenia LongClick, a następnie użyć kodu, aby dowiedzieć się długość i szerokość geograficzną z następującego kodu:

GeoPoint geoPoint=mapView.getProjection().fromPixels((int)event.getX(),(int)event.getY()); 
int latitude = geoPoint.getLatitudeE6(); 
int longitude = geoPoint.getLongitudeE6(); 

gdzie „zdarzenie” jest przedmiotem „MotionEvent”.

Wykorzystaj inne wydarzenie w zależności od przypadku.

0

Daje długość i szerokość geograficzną, na której punktem mapy

map.setOnMapClickListener(new OnMapClickListener() { 

     @Override 
     public void onMapClick(LatLng point) { 
      //myMap.addMarker(new MarkerOptions().position(point).title(point.toString())); 

       //The code below demonstrate how to convert between LatLng and Location 

       //Convert LatLng to Location 
       Location location = new Location("Test"); 
       location.setLatitude(point.latitude); 
       location.setLongitude(point.longitude); 
       location.setTime(new Date().getTime()); //Set time as current Date 
       txtinfo.setText(location.toString()); 

       //Convert Location to LatLng 
       LatLng newLatLng = new LatLng(location.getLatitude(), location.getLongitude()); 

       MarkerOptions markerOptions = new MarkerOptions() 
         .position(newLatLng) 
         .title(newLatLng.toString()); 

       map.addMarker(markerOptions); 

     } 
    }); 
Powiązane problemy