I've managed to run OSM and GMS in one app using fragments. And I know how to use markers (Overlay) in app using activities. I have a problem using Overlay for OSM in app with fragments, because to use OSM i need to create static class for it and ItemizedOverlay requires using getApplicationContext() method for ResourceProxy that can't be referenced from static context.
This is a working OSM class using fragments:
public static class MapOSM extends Fragment{ // Klasa odpowiedzialna za fragment z mapą OSM
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState){
LinearLayout rl = (LinearLayout)inflater.inflate(R.layout.activity_osm, container, false);
osmRl = (MapView) rl.findViewById(R.id.mapOsm2);
osmRl.getTileProvider().setTileSource(TileSourceFactory.MAPNIK);
return rl;
}
}
And this i need to use to get Overlay working:
ResourceProxy resourceProxy = new DefaultResourceProxyImpl(getApplicationContext());
myItemizedOverlay = new MyItemizedOverlay(marker, resourceProxy);
map.getOverlays().add(myItemizedOverlay);
Thanks for any answer :)
So, thanks to "k3b", I'm posting my working OSM class using fragments, with 2 added markers.
public static class MapOSM extends Fragment{ // Klasa odpowiedzialna za fragment z mapą OSM
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState){
LinearLayout ll = (LinearLayout)inflater.inflate(R.layout.activity_osm, container, false);
osmRl = (MapView) ll.findViewById(R.id.mapOsm2);
osmRl.getTileProvider().setTileSource(TileSourceFactory.MAPNIK);
osmRl.setBuiltInZoomControls(true);
osmRl.setMultiTouchControls(true);
//Overlay
MyItemizedOverlay myItemizedOverlay = null;
IMapController mapController = osmRl.getController();
mapController.setZoom(9);
GeoPoint startPoint = new GeoPoint(54.792140, 18.402407);
mapController.setCenter(startPoint);
/// Markery na mapie
Drawable marker=getResources().getDrawable(android.R.drawable.star_big_on);
assert marker != null;
int markerWidth = marker.getIntrinsicWidth();
int markerHeight = marker.getIntrinsicHeight();
marker.setBounds(0, markerHeight, markerWidth, 0);
ResourceProxy resourceProxy = new DefaultResourceProxyImpl(getActivity().getApplicationContext());
myItemizedOverlay = new MyItemizedOverlay(marker, resourceProxy);
osmRl.getOverlays().add(myItemizedOverlay);
GeoPoint myPoint1 = new GeoPoint(54.792140, 18.402407);
myItemizedOverlay.addItem(myPoint1, "myPoint1", "myPoint1");
GeoPoint myPoint2 = new GeoPoint(54.752, 18.422);
myItemizedOverlay.addItem(myPoint2, "myPoint2", "myPoint2");
return ll;
}
}
Hope it helps someone:)