Tôi đã bao gồm Bản đồ phố mở trong ứng dụng Android của mình. Trong chế độ xem bản đồ, người dùng sẽ có thể chụp màn hình sau khi bản đồ được tải hoàn toàn. Nhưng hiện tại người dùng có thể chụp ảnh ngay cả khi chế độ xem bản đồ vẫn đang tải. Ai đó có thể cho tôi biết làm thế nào để phát hiện khi mapview được nạp đầy đủ?Phát hiện xem Bản đồ OSM vẫn đang tải hay không trong android
Dưới đây là mã của tôi để nạp 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();
}
Cảm ơn bạn rất nhiều, bạn có thể vui lòng cung cấp một số mã mẫu cho điều này không? – TharakaNirmana
tôi đã có thể đưa ra một tập hợp các mã như thế này: public class gạch kéo dài TilesOverlay { \t Gạch công cộng (MapTileProviderBase aTileProvider, Bối cảnh aContext) { \t \t siêu (aTileProvider, aContext); \t \t // constructor TODO Auto-tạo còn sơ khai \t} \t \t @ Override \t public void drawTiles (Canvas c, int zoomLevel, int tileSizePx, Rect Viewport) { \t \t // TODO Auto-tạo ra phương pháp còn sơ khai \t \t TileLooper tileloop; \t \t tileloop.handleTile (arg0, arg1, arg2, arg3, arg4) \t \t siêu. – TharakaNirmana