Intereting Posts
चेतावनी: लिंकर: एप_प्रोसेस में पाठ पुनर्स्थापना है यह स्मृति बर्बाद कर रहा है और एक सुरक्षा जोखिम है। कृपया ठीक करें। अनुमतियां अस्वीकृत MediaCodec के साथ एंड्रॉइड डीकोड एमपी 3 MediaExtractor का उपयोग नहीं करें जब मैं सपोर्ट सर्विसेव्यूपैनोरमाफ्रैगमेंट का उपयोग किया था, तो आवेदन क्रैश हो रहा था फेसबुक एसडीके के साथ एप्लिकेशन को संकलन करने में त्रुटि CollapsingToolbarLayout के साथ समन्वयरेखा में WebView स्थान श्रोता एक सेवा से काम करता है, लेकिन एक IntentService नहीं है एंड्रॉइड पर गतिशील रूप से रैखिक लेआउट कैसे जोड़ें? अधिकतम उपलब्ध आकार में बिटमैप का आकार कैसे बदला जाए? संसाधन नाम प्रोग्राम से प्रवेश करें चेक-इन की जांच / अनचेक करने में असमर्थ जब ऐप खुला नहीं होता है तो जीसीएम संदेश नहीं भेजा जाता है? मुख्य थ्रेड के रूप में UI को अपडेट करने के लिए एक एकल थ्रेडेड मॉडल का उपयोग क्यों किया जाता है? पीछे संगत पेजट्रांसफ़ॉर्मर NotificationCompat.Builder और startForeground का उपयोग कैसे करें? AutoCompleteTextView इनपुट नंबरों की अनुमति नहीं देता है

OSMDroid स्थानीय प्रदाता को स्थानीय रूप से एक साथ कैसे काम करना है?

इसलिए मैंने अंत में ओएसएमडीडोड को एक स्थानीय डायरेक्टरी के साथ काम किया है, लेकिन मैं स्थानीय रूप से गायब होने पर मैपनिक से टाइल्स लोड करना चाहता हूं। मुझे यकीन नहीं है कि मुझे क्या याद आ रही है

मेरा कार्यान्वयन इस प्रकार है:

private MapView mapView = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.osm_map); mapView = (MapView) findViewById(R.id.mapview); mapView.setBuiltInZoomControls(true); mapView.setMultiTouchControls(true); MapController mapController = mapView.getController(); mapController.setZoom(5); GeoPoint point2 = new GeoPoint(55708545, 10006348); mapController.setCenter(point2); //TODO Save to SD AssetManager assetManager = getAssets(); InputStream is; String fileName = "test.zip"; String path = Environment.getExternalStorageDirectory() + File.separator + fileName; //TODO Path to save it to try { is = assetManager.open(fileName); FileOutputStream fo = new FileOutputStream(path); byte[] b = new byte[1024]; int length; while((length = is.read(b)) != -1) { fo.write(b, 0, length); } fo.flush(); fo.close(); is.close(); } catch (IOException e) { e.printStackTrace(); } File tileFile = new File(path); IArchiveFile[] archives = new IArchiveFile[1]; archives[0] = ArchiveFileFactory.getArchiveFile(tileFile); CustomTileSource customTiles = new CustomTileSource("Mapnik", null, 0, 24, 256, ".png"); // the name should match the name of the folder that is zipped MapTileModuleProviderBase[] providers = new MapTileModuleProviderBase[2]; providers[0] = new MapTileFileArchiveProvider(new SimpleRegisterReceiver(getApplicationContext()), customTiles, archives); providers[1] = new MapTileDownloader(TileSourceFactory.MAPNIK); mapView.setUseDataConnection(false); mapView.setTileSource(TileSourceFactory.MAPNIK); MapTileProviderArray tileProvider = new MapTileProviderArray(customTiles, null, providers); TilesOverlay tilesOverlay = new TilesOverlay(tileProvider, getApplicationContext()); mapView.getOverlays().add(tilesOverlay); mapView.invalidate(); } 

तथा

 public class CustomTileSource extends BitmapTileSourceBase { public CustomTileSource(String aName, string aResourceId, int aZoomMinLevel, int aZoomMaxLevel, int aTileSizePixels, String aImageFilenameEnding) { super(aName, aResourceId, aZoomMinLevel, aZoomMaxLevel, aTileSizePixels, aImageFilenameEnding); } } 

Solutions Collecting From Web of "OSMDroid स्थानीय प्रदाता को स्थानीय रूप से एक साथ कैसे काम करना है?"

ठीक है, इसलिए मैंने अंत में एक समाधान पाया। इसकी काफी जटिल और लंबी है लेकिन यह काम करता है: डी

अब मेरे ओसमोड्रोफायगमेंट (हां में टुकड़े टुकड़े) में मैं निम्नलिखित है:

 @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { RelativeLayout view = (RelativeLayout) inflater.inflate(R.layout.osm_map, container, false); RelativeLayout mapContainer = (RelativeLayout) view.findViewById(R.id.osm_map_parent); mMapView = new OsmCustomMapView(getActivity(), 256, 10, 13); // I've made a custom implementation in order to limit zoom, you can just use regular osmdroid mapview LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); mMapView.setLayoutParams(params); mapContainer.addView(mMapView); mMapView.setBuiltInZoomControls(true); mMapView.setMultiTouchControls(false); // pinch zoom works bad on osmdroid MapController mapController = mMapView.getController(); mapController.setZoom(11); // must set zoom before setCenter, else we get the wrong position GeoPoint center = new GeoPoint(0,0); mapController.setCenter(center); // save zip to sd AssetManager assetManager = getActivity().getAssets(); InputStream is; String fileName = "map.zip"; // the zip file lies in assets root String path = this.getActivity().getExternalFilesDir(null) + File.separator + fileName; // the path I save SD to File tileFile = new File(path); if(!tileFile.exists()) { try { is = assetManager.open(fileName); FileOutputStream fo = new FileOutputStream(path); byte[] b = new byte[1024]; int length; while((length = is.read(b)) != -1) { fo.write(b, 0, length); } fo.flush(); fo.close(); is.close(); } catch (IOException e) { e.printStackTrace(); } } IArchiveFile[] archives = new IArchiveFile[1]; archives[0] = ArchiveFileFactory.getArchiveFile(tileFile); // Simple implementation that extends BitmapTileSourceBase and nothing else CustomTileSource customTiles = new CustomTileSource("Maverik", null, 10, 14, 256, ".png"); // Maverik is the name of the folder inside the zip (so zip is map.zip and inside it is a folder called Maverik) MapTileModuleProviderBase[] providers = new MapTileModuleProviderBase[2]; providers[0] = new MapTileFileArchiveProvider(new SimpleRegisterReceiver(getActivity().getApplicationContext()), customTiles, archives); // this one is for local tiles (zip etc.) providers[1] = new MapTileDownloader(TileSourceFactory.MAPNIK); // MAPNIK web tile source mMapView.setUseDataConnection(true); MapTileProviderArray tileProvider = new MapTileProviderArray(customTiles, new SimpleRegisterReceiver(getActivity().getApplicationContext()), providers); TilesOverlay tilesOverlay = new TilesOverlay(tileProvider, getActivity().getApplicationContext()); tilesOverlay.setLoadingBackgroundColor(Color.TRANSPARENT); // this makes sure that the invisble tiles of local tiles are transparent so we can see tiles from web, transparent have a minor performance decline. mMapView.getOverlays().add(tilesOverlay); mMapView.invalidate(); return view; }