Ho incluso Open Street Maps nella mia applicazione Android. Nella mappa, l'utente dovrebbe essere in grado di catturare lo schermo dopo che la mappa è stata caricata completamente. Ma attualmente l'utente può catturare l'immagine anche quando il mapview è ancora in fase di caricamento. Qualcuno può dirmi come rilevare quando mapview è completamente caricato?Rileva se l'OSM Mapview si sta ancora caricando o no in Android
Qui di seguito è il mio codice per caricare il 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();
}
Grazie mille, potresti fornire alcuni codici di esempio per questo? – TharakaNirmana
sono stato in grado di elaborare un insieme di codici come questo: public class Piastrelle estende TilesOverlay { \t Tiles pubblici (MapTileProviderBase aTileProvider, Context aContext) { \t \t super (aTileProvider, aContext); \t \t // TODO costruttore generato automaticamente stub \t} \t \t @Override \t drawTiles public void (Tela c, int zoomLevel, int tileSizePx, Rect finestra) { \t \t // TODO generato automaticamente stub \t \t TileLooper tileloop; \t \t tileloop.handleTile (arg0, arg1, arg2, arg3, arg4) \t \t super.drawTiles (c, zoomLevel, tileSizePx, viewPort); \t} } per favore fatemi sapere come procedere. Grazie! – TharakaNirmana