হ্যাঁ, আপনি অ্যান্ড্রয়েড মানচিত্রের এপিআই v2 এর সাথে কাস্টম টাইলস ব্যবহার করতে পারেন - আপনি গিথুবের অ্যান্ড্রয়েড অ্যাপের জন্য আমাদের ওপেনট্রিপপ্ল্যানারে একটি সম্পূর্ণ কার্যকারিতা উদাহরণ দেখতে পাচ্ছেন । (আপনি সরাসরি গুগল প্লে থেকে অ্যাপটি ডাউনলোড করতে পারেন )
আমরা নিম্নলিখিত টাইল সরবরাহকারীদের সমর্থন করি:
- LyrkOpenStreetMap
- MapQuestOpenStreetMap
- Mapnik
- CycleMap
- গুগল (সাধারণ, উপগ্রহ, হাইব্রিড, অঞ্চল)
আমাদের CustomUrlTileProvider বর্গ দেখা যায় GitHub থেকে এখানে , এবং আমি এটি নীচের আটকানো করেছি:
public class CustomUrlTileProvider extends UrlTileProvider {
private String baseUrl;
public CustomUrlTileProvider(int width, int height, String url) {
super(width, height);
this.baseUrl = url;
}
@Override
public URL getTileUrl(int x, int y, int zoom) {
try {
return new URL(baseUrl.replace("{z}", "" + zoom).replace("{x}", "" + x)
.replace("{y}", "" + y));
} catch (MalformedURLException e) {
e.printStackTrace();
}
return null;
}
}
এবং ব্যবহারকারীর পছন্দসই ভিত্তিতে মানচিত্র টাইল সরবরাহকারীদের মধ্যে স্যুইচ করা কোডটি এখানে রয়েছে:
/**
* Changes the tiles used to display the map and sets max zoom level.
*
* @param overlayString tiles URL for custom tiles or description for
* Google ones
*/
public void updateOverlay(String overlayString) {
int tile_width = OTPApp.CUSTOM_MAP_TILE_SMALL_WIDTH;
int tile_height = OTPApp.CUSTOM_MAP_TILE_SMALL_HEIGHT;
if (overlayString == null) {
overlayString = mPrefs.getString(OTPApp.PREFERENCE_KEY_MAP_TILE_SOURCE,
mApplicationContext.getResources()
.getString(R.string.map_tiles_default_server));
}
if (mSelectedTileOverlay != null) {
mSelectedTileOverlay.remove();
}
if (overlayString.startsWith(OTPApp.MAP_TILE_GOOGLE)) {
int mapType = GoogleMap.MAP_TYPE_NORMAL;
if (overlayString.equals(OTPApp.MAP_TILE_GOOGLE_HYBRID)) {
mapType = GoogleMap.MAP_TYPE_HYBRID;
} else if (overlayString.equals(OTPApp.MAP_TILE_GOOGLE_NORMAL)) {
mapType = GoogleMap.MAP_TYPE_NORMAL;
} else if (overlayString.equals(OTPApp.MAP_TILE_GOOGLE_TERRAIN)) {
mapType = GoogleMap.MAP_TYPE_TERRAIN;
} else if (overlayString.equals(OTPApp.MAP_TILE_GOOGLE_SATELLITE)) {
mapType = GoogleMap.MAP_TYPE_SATELLITE;
}
mMap.setMapType(mapType);
mMaxZoomLevel = mMap.getMaxZoomLevel();
} else {
if (overlayString.equals(getResources().getString(R.string.tiles_mapnik))) {
mMaxZoomLevel = getResources().getInteger(R.integer.tiles_mapnik_max_zoom);
} else if (overlayString.equals(getResources().getString(R.string.tiles_lyrk))) {
mMaxZoomLevel = getResources().getInteger(R.integer.tiles_lyrk_max_zoom);
tile_width = OTPApp.CUSTOM_MAP_TILE_BIG_WIDTH;
tile_height = OTPApp.CUSTOM_MAP_TILE_BIG_HEIGHT;
} else {
mMaxZoomLevel = getResources().getInteger(R.integer.tiles_maquest_max_zoom);
}
mMap.setMapType(GoogleMap.MAP_TYPE_NONE);
CustomUrlTileProvider mTileProvider = new CustomUrlTileProvider(
tile_width,
tile_height, overlayString);
mSelectedTileOverlay = mMap.addTileOverlay(
new TileOverlayOptions().tileProvider(mTileProvider)
.zIndex(OTPApp.CUSTOM_MAP_TILE_Z_INDEX));
if (mMap.getCameraPosition().zoom > mMaxZoomLevel) {
mMap.moveCamera(CameraUpdateFactory.zoomTo(mMaxZoomLevel));
}
}
}
এখানে ম্যাপকোয়েস্ট ওপেনস্ট্রিটম্যাপ টাইলগুলির একটি স্ক্রিনশট রয়েছে:
নিজের টাইলস তৈরির বিষয়ে আরও তথ্যের জন্য, "নিজের নিজস্ব টাইলস তৈরি করার" জন্য টাইলওভারলে গুগল ডকুমেন্টেশন পাশাপাশি ওপেনস্ট্রিটম্যাপ উইকি দেখুন ।
বিশেষত, গুগল ডকুমেন্টেশন বলে:
নোট করুন যে পৃথিবীটি দ্রাঘিমাংশের -180 ডিগ্রি এবং মানচিত্রের ডান (পূর্ব) পাশের দ্রাঘিমাংশের 180 ডিগ্রিটির সাথে সামঞ্জস্য রেখে মানচিত্রের বাম (পশ্চিম) পাশ দিয়ে মার্কেটর প্রক্ষেপণ (উইকিপিডিয়া দেখুন) ব্যবহার করে অনুমান করা হয়েছে। মানচিত্রটিকে বর্গক্ষেত্র তৈরি করতে মানচিত্রের শীর্ষ (উত্তর) পাশটি 85.0511 ডিগ্রি অক্ষাংশ এবং ম্যাপের নীচে (দক্ষিণ) পাশের সাথে অক্ষাংশের -85.0511 ডিগ্রির সাথে সামঞ্জস্য রয়েছে। এই অক্ষাংশের সীমার বাইরে অঞ্চলগুলি রেন্ডার করা হয় না।
প্রতিটি জুম স্তরে, মানচিত্রটি টাইলগুলিতে বিভক্ত হয় এবং কেবল স্ক্রিনগুলি ওভারল্যাপ করে এমন টাইলগুলি ডাউনলোড এবং রেন্ডার হয়। প্রতিটি টাইল বর্গক্ষেত্র এবং মানচিত্রটি টাইলগুলিতে নিম্নরূপে বিভক্ত:
জুম স্তরে 0, একটি টাইল পুরো বিশ্বকে উপস্থাপন করে। এই টাইলের স্থানাঙ্কগুলি হ'ল (x, y) = (0, 0)।
জুম স্তর 1 এ, বিশ্বের 2 x 2 গ্রিডে সাজানো 4 টি টাইল বিভক্ত। ...
- জুম স্তরে এন, বিশ্বের 2N x 2N গ্রিডে সাজানো 4N টাইলগুলিতে বিভক্ত।
নোট করুন যে ক্যামেরাটি সর্বনিম্ন জুম স্তরটি সমর্থন করে (যা বিভিন্ন কারণের উপর নির্ভর করতে পারে) হ'ল গুগলম্যাপ.সেটমিনজুমলেভ এবং সর্বোচ্চ জুম স্তর হ'ল গুগল্যাপ get
টাইলগুলির স্থানাঙ্কগুলি মানচিত্রের উপরের বাম (উত্তর পশ্চিম) কোণ থেকে পরিমাপ করা হয়। জুম স্তরে এন, টাইল স্থানাঙ্কের এক্স মানগুলি 0 থেকে 2N - 1 এবং পশ্চিম থেকে পূর্ব দিকে বৃদ্ধি পায় এবং y মান 0 থেকে 2N - 1 এবং উত্তর থেকে দক্ষিণে বৃদ্ধি পায়।
প্রতিটি টালি সরবরাহকারীর রেফারেন্স হিসাবে OTP অ্যান্ড্রয়েডের মধ্যে ব্যবহৃত ফর্ম্যাট URL গুলি দেখতে:
সুতরাং, উপরোক্ত সরবরাহকারীদের জন্য টাইল চিত্রগুলি হ'ল গুগল ডকুমেন্টেশন দ্বারা নির্দেশিত ডিরেক্টরি কাঠামোয় সাজানো পিএনজি ফাইল। আপনি নিজের সার্ভারে হোস্ট করা আপনার নিজস্ব মানচিত্র টাইলস তৈরি করতে অনুরূপ ফর্ম্যাটটি অনুসরণ করবেন। নোট করুন যে এই ইউআরএল / চিত্রগুলি অবশ্যই মোবাইল ডিভাইসে সর্বজনীনভাবে অ্যাক্সেসযোগ্য (যেমন, পাসওয়ার্ড সুরক্ষিত হতে পারে না)।