Próbuję umieścić znacznik, gdy użytkownik kliknie na mapie. Używam SupportMapFragment
wewnątrz ActionBarActivity
. Ale mapa nie odpowiada, a ponadto operacja map.setMapType()
nie działa.Android Google Maps v2: odbiornik kliknięcia nie odpowiada
Oto mój kod:
private GoogleMap map;
private Marker marker;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
ActionBarActivity activity = (ActionBarActivity) getActivity();
activity.getSupportActionBar().setTitle(R.string.select_location);
super.onCreateView(inflater, container, savedInstanceState);
return inflater.inflate(R.layout.map, container, false);
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
Log.d("Map","On view created");
map = getMap();
map.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
map.setOnMapClickListener(new OnMapClickListener() {
@Override
public void onMapClick(LatLng point) {
Log.d("Map","Map clicked");
marker.remove();
drawMarker(point);
}
});
...
Location location = locationManager.getLastKnownLocation(provider);
if(location!=null){
//PLACE THE INITIAL MARKER
drawMarker(new LatLng(location.getLatitude(),location.getLongitude()));
}
}
Logcat pokazuje komunikat „stworzony” na widoku, a mapa pokazuje aktualną pozycję z markerem, więc ostatnia część kodu jest wykonywany. Ale onMapClickListener
jest nadpisany lub coś, ponieważ nie działa, a mapa nie jest satelitą.
Czy ktoś może mi pomóc?
Dzięki josuadas! Chodzi o to, że muszę nadmuchać XML, ponieważ nie jest to widok z samą mapą. Myślę, że nadal konieczne jest rozszerzenie SupportMapFragment, prawda? –
Ez horregatik! Moim zdaniem nie powinieneś rozszerzać SupportMapFragment w tym przypadku, ale tylko Fragment (z biblioteki wsparcia). Zobacz ten link: http://stackoverflow.com/questions/13804511/supportmapfragment-with-a-ustom-layout-possible – josuadas
Inną możliwością jest dodanie SupportMapFragment do FragmentActivity po prostu zajmując miejsce na mapie. F.i. używanie FrameLayout jako kontenera w układzie FragmentActivity: http://developer.android.com/training/basics/fragments/fragment-ui.html#AddAtRuntime – josuadas