Mam włączone mapy ulic otwartych w mojej aplikacji na Androida. W widoku mapy użytkownik powinien być w stanie przechwycić ekran po pełnym załadowaniu mapy. Ale obecnie użytkownik może przechwytywać obraz nawet wtedy, gdy widok mapy wciąż się ładuje. Czy ktoś może mi powiedzieć, jak wykryć, kiedy widok mapy jest w pełni załadowany?Wykryj, czy widok mapy OSM wciąż się ładuje, czy nie, w Androidzie
Poniżej jest mój kod, aby załadować MapView:
public class MainActivity extends Activity {
MapView mapView;
MyLocationOverlay myLocationOverlay = null;
ArrayList<OverlayItem> anotherOverlayItemArray;
protected ItemizedOverlayWithBubble<ExtendedOverlayItem> itineraryMarkers;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mapView = (MapView) findViewById(R.id.mapview);
final ArrayList<ExtendedOverlayItem> waypointsItems = new ArrayList<ExtendedOverlayItem>();
itineraryMarkers = new ItemizedOverlayWithBubble<ExtendedOverlayItem>(this, waypointsItems, mapView, new ViaPointInfoWindow(R.layout.itinerary_bubble, mapView));
mapView.getOverlays().add(itineraryMarkers);
mapView.setTileSource(TileSourceFactory.MAPNIK);
mapView.setBuiltInZoomControls(true);
MapController mapController = mapView.getController();
mapController.setZoom(1);
GeoPoint point2 = new GeoPoint(51496994, -134733);
mapController.setCenter(point2);
Drawable marker=getResources().getDrawable(android.R.drawable.star_big_on);
GeoPoint myPoint1 = new GeoPoint(0*1000000, 0*1000000);
ExtendedOverlayItem overlayItem = new ExtendedOverlayItem("Title Test Loc", "Desc", myPoint1, this);
overlayItem.setMarkerHotspot(OverlayItem.HotspotPlace.BOTTOM_CENTER);
overlayItem.setMarker(marker);
overlayItem.setRelatedObject(0);
itineraryMarkers.addItem(overlayItem);
mapView.invalidate();
myLocationOverlay = new MyLocationOverlay(this, mapView);
mapView.getOverlays().add(myLocationOverlay);
myLocationOverlay.enableMyLocation();
myLocationOverlay.runOnFirstFix(new Runnable() {
public void run() {
mapView.getController().animateTo(myLocationOverlay.getMyLocation());
}
});
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
myLocationOverlay.enableMyLocation();
myLocationOverlay.enableCompass();
myLocationOverlay.enableFollowLocation();
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
myLocationOverlay.disableMyLocation();
myLocationOverlay.disableCompass();
myLocationOverlay.disableFollowLocation();
}
Dziękuję bardzo, czy mógłbyś podać kilka przykładowych kodów dla tego? – TharakaNirmana
byłem w stanie wymyślić zestaw kodów tak: public class Płytki rozciąga TilesOverlay { \t Płytki publicznych (MapTileProviderBase aTileProvider, kontekst aContext) { \t \t Super (aTileProvider, aContext); \t \t // Do zrobienia Automatycznie generowane konstruktor skrótową \t} \t \t @Override \t publicznych pustych drawTiles (Płótno C int zoomlevel int tileSizePx, Rect rzutnia) { \t \t // Do zrobienia Automatycznie generowane metodą en \t \t TileLooper tileloop; \t tileloop.handleTile (arg0, arg1, arg2, arg3, arg4) \t \t super.drawTiles (c, zoomLevel, tileSizePx, viewPort); \t} } proszę dać mi znać, jak postępować. Dzięki! – TharakaNirmana