2012-05-20 17 views
7

Podałem współrzędne dla szerokości i długości geograficznej i chcę utworzyć obiekt lokalizacji z tymi.Nie ma konstruktora, który zajmuje podwójną pozycję, aby zrobić lokalizację, więc próbowałem w ten sposób:Uzyskiwanie położenia ze współrzędnych

Location l = null; 
l.setLatitude(lat); 
l.setLongitude(lon); 

ale ulega awarii. Jakiś inny pomysł?

+2

l jest null. Jak to się nazywa metody? –

+0

Ponieważ nie było konstruktora, który bierze dwa debile jako argumenty, a później dowiedziałem się, że można to zrobić, podając dowolny ciąg jako dostawca. – NiVeR

Odpowiedz

14

Wystarczy utworzyć nową lokalizację z nowej lokalizacji ("reverseGeocoded"); jak ten

GeoPoint newCurrent = new GeoPoint(59529200, 18071400); 
     Location current = new Location("reverseGeocoded"); 
     current.setLatitude(newCurrent.getLatitudeE6()/1e6); 
     current.setLongitude(newCurrent.getLongitudeE6()/1e6); 
     current.setAccuracy(3333); 
     current.setBearing(333); 
+0

Spróbuję teraz, dzięki. – NiVeR

+0

Genialny! dzięki –

4

To powoduje awarię, ponieważ nie można wywoływać metod na nieistniejącym obiekcie.

Zakładam, że mówisz o android.location.Location?

Jest to zwykle zwracane przez różne usługi pozycjonowania systemu Android. Co chcesz z tym zrobić?

Czy chcesz cofnąć geocode to? Jak znaleźć adres dla tej współrzędnej geograficznej?

Czy chcesz użyć go jako "fałszywej" pozycji i podać ją innym aplikacjom?

Istnieją dwa konstruktory BTW. Jeden przyjmuje nazwę usługi pozycjonowania, a drugi jest konstruktorem kopii i przyjmuje istniejącą lokalizację.

Można więc stworzyć Lokalizacja takiego:

Location l = new Location("network"); 

Ale nie sądzę, że spowoduje to coś chcesz mieć.

Tu jest link do dokumentacji:

https://developer.android.com/reference/android/location/Location.html#Location%28java.lang.String%29

+0

Nie. W mojej lokalizacji korzystam z interfejsu API Miejsc Google do odbierania miejsc w pobliżu i muszę obliczyć odległość między miejscami a bieżącą lokalizacją. Zobaczyłem metodę distanceto(), ale akceptuję obiekt Location. Tak więc muszę utworzyć Lokalizacja od lon i lat zwrócony w obiekcie JSON z google. – NiVeR

1
Location l = new Location("any string"); 
l.setLatitude(lat); 
l.setLongitude(lon); 
0

Spróbuj tego:

public double lat; 
public double lon; 

public void onLocationChanged(Location loc) 
{ 
lat=loc.getLatitude(); 
lon=loc.getLongitude(); 
Toast.makeText(getBaseContext(),"Latitude:" + lat +Longitude"+lon,Toast.LENGTH_LONG).show();  
} 
Powiązane problemy