2012-12-12 11 views
17

Używam niestandardowej ikony w mojej aplikacji dla bieżącej lokalizacji użytkownika i chcę zachować ją w ten sposób podczas uaktualniania do nowej biblioteki Map Google.Android Mapy Google V2 zmieniają ikonę mojej lokalizacji

Dzięki bibliotece Google Maps v1 rozszerzyłem funkcję MyLocationOverlay i nadpisałem metodę drawMyLocation, aby narysować tam ikonę niestandardową.

GoogleMap włącza bieżącą lokalizację za pomocą metody setMyLocationEnabled, ale nie ma możliwości jej dostosowania, o ile wiem.

Czy ktoś wie, jak to zrobić na v2?

Odpowiedz

3

Ok, więc po prostu pomyślałem, że jeśli nie dodać tytuł lub fragment, marker nie będą miały wpływu na zdarzenia click, i działa jako nakładka obrazu. Nawet jeśli to nie jest idealne, to pasuje moje potrzeby

private Marker marker = mMap.addMarker(new MarkerOptions() 
        .position(latLng) 
        .icon(BitmapDescriptorFactory.fromResource(R.drawable.arrow))); 

Dzięki wszystkim

13

Utwórz znacznik w konstruktorze map, który używa niestandardowej ikony.

_myLocation = mMap.addMarker(new MarkerOptions() 
         .position(MAP_CENTER) 
         .title("My Location") 
         .icon(BitmapDescriptorFactory.fromResource(R.drawable.mylocation))); 

Wdrożenie Zmieniono lokalizację Listener, https://developers.google.com/maps/documentation/android/reference/com/google/android/gms/maps/LocationSource.OnLocationChangedListener

zaktualizować znacznik lokalizacji, gdy dostawca jest nazywany:

public void onLocationChanged (Location location) 
{ 
    _myLocation.position(location); //May have to convert from location to LatLng 
} 
+1

ten sposób został wykorzystany do zrobienia na bibliotece V1. W V2 nie obsługuje MapView wewnątrz działania. Co więcej, na V2 nie ma klasy Overlay. https://developers.google.com/maps/documentation/android/reference/com/google/android/gms/maps/model/package-summary –

+1

My Bad, nie wiedziałem, że masz na myśli Mapy Google Play . Zobacz moją zaktualizowaną odpowiedź powyżej. To jest miłe, ponieważ jest bardzo podobne do tego, jak zachowuje się wersja JavaScript w Mapach Google. – javram

+1

@RobertEstivill: AFAIK, to jest twoja jedyna opcja, przynajmniej podczas trzymania się udokumentowanego/obsługiwanego zachowania. – CommonsWare

0

Jest to z pewnością sposób, aby pokazać niestandardową ikonę na bieżącej lokalizacji. Zamówienie Link dostaniesz więcej pomysłów na dostosowanie swojej ikony na mapie.

Wypróbuj poniższy kod:

private static final LatLng MELBOURNE = new LatLng(-37.81319, 144.96298); 
private Marker melbourne = mMap.addMarker(new MarkerOptions() 
         .position(MELBOURNE) 
         .title("Melbourne") 
         .snippet("Population: 4,137,400") 
         .icon(BitmapDescriptorFactory.fromResource(R.drawable.arrow))); 
+0

Można to zrobić, ale nie jest kompatybilny z obecnym mechanizmem MyLocation. Innymi słowy, możesz użyć znacznika bez wszystkich informacji o oknie, ale będziesz musiał ręcznie zaimplementować narzędzie LocationListener, aby przenieść wybraną lokalizację. Nie można ponownie wykorzystać wbudowanych możliwości lokalizacji –

+0

Jest to jedyny sposób AFAIK. Opublikuj kod, aby uzyskać informacje o Twoim problemie. Dziękuję Ci. – GrIsHu

Powiązane problemy