এমকেম্যাপভিউ জুম এবং অঞ্চল


85

আমি গুগল ম্যাপ জাভাস্ক্রিপ্ট এপিআই ব্যবহার করে পরিচিত। সম্প্রতি আমি আইফোন প্রকল্পের জন্য ম্যাপকিট কাঠামোটি ব্যবহার শুরু করেছি, তবে মানচিত্রে জুমিং এবং অঞ্চল নির্ধারণের জন্য আমার খুব কষ্ট হচ্ছে।

গুগল ম্যাপস এপিআইতে আমি 8, 9, 10 এর মত পূর্ণসংখ্যার জুম স্তরগুলি সোজাভাবে ফাংশন সেটজুম () ব্যবহার করতাম। আমি ম্যাপকিট ফ্রেমওয়ার্কে দেখতে পাচ্ছি একমাত্র সমতুল্য পদ্ধতি হ'ল সেটরেজিওন: অ্যানিমেটেড। আমি যেমন বুঝতে পেরেছি, জুম স্তরটি নির্দিষ্ট করার জন্য আমাকে একটি অঞ্চলের স্প্যানের অক্ষাংশ এবং দ্রাঘিমাংশ "ডেল্টা" মান নির্ধারণ করতে হবে। তবে এই মানগুলি কী উপস্থাপন করে তা আমি সত্যিই ধারণা করি না (আমি ডকুমেন্টেশনটি পড়েছি)।

আমি যখন এম কে ম্যাপভিউ প্রতিনিধি ব্যবহার করি এবং অঞ্চলটিতে স্প্যান মানগুলি সনাক্ত করি তখন ডিডচ্যাঞ্জ প্রতিনিধি পদ্ধতির ফলাফলগুলি একে অপরের সাথে সম্পর্কযুক্ত বলে মনে হয় না। এটি ঠিক আছে যখন আমি জুম আউট করি এবং দস্তাবেজগুলিতে বর্ণিত স্প্যান ডেল্টা মানগুলি বৃদ্ধি পাচ্ছে। তবে হঠাৎ আমি জুম ছাড়াই মানচিত্রটি টেনে আনি এবং বদ্বীপের মানগুলি 0.0 হয়ে যায়।

এই স্প্যান এবং ব-দ্বীপটির রেফারেন্স পয়েন্টটি কি কেউ দয়া করে ব্যাখ্যা করতে পারেন? বা এই ডেল্টা মানগুলিতে একটি পূর্ণসংখ্যার জুম স্তরকে (9 এর মতো) রূপান্তর করার জন্য কি কোনও অ্যালগরিদম আছে?

বোনাসের প্রশ্ন হিসাবে এমকেম্যাপভিউতে সর্বনিম্ন সর্বাধিক জুম স্তর নির্দিষ্ট করার কোনও উপায় নেই :)

ধন্যবাদ

উত্তর:


134

প্রথমত, এম কে ম্যাপভিউ গুগল ম্যাপের মতো জুম স্তরের পূর্বনির্ধারিত সেট ব্যবহার করে না / ব্যবহার করে না।

পরিবর্তে, MKMapView দৃশ্যমান এলাকা ব্যবহার বর্ণনা করা হয়েছে MKCoordinateRegion দুইটি মানের গঠিত যা:

  1. কেন্দ্র (অঞ্চল কেন্দ্র বিন্দু), এবং
  2. স্প্যান (কেন্দ্রের চারপাশে দৃশ্যমান ক্ষেত্রের আকার)।

কেন্দ্রবিন্দুটি সুস্পষ্ট হওয়া উচিত (এটি অঞ্চলটির কেন্দ্রবিন্দু))

যাইহোক, স্প্যান (যা একটি এম কে কর্ডিনেটস্প্যান ) এর সমন্বয়ে গঠিত:

  1. অক্ষাংশে ডেল্টা (অঞ্চলটি উল্লম্ব দূরত্ব প্রতিনিধিত্ব করে) এবং
  2. দ্রাঘিমাংশ ডেল্টা (অঞ্চল দ্বারা অনুভূমিক দূরত্ব উপস্থাপিত)

একটি সংক্ষিপ্ত উদাহরণ। এখানে একটি খেলনা MKCoordinateRegion:

  1. কেন্দ্র:
    • অক্ষাংশ: 0
    • দ্রাঘিমাংশ: 0
  2. স্প্যান:
    • অক্ষাংশে ডেল্টা: 8
    • দ্রাঘিমাংশ ডেল্টা: 6

অঞ্চলটির নিম্নতম এবং সর্বাধিক স্থানাঙ্কগুলি ব্যবহার করে বর্ণনা করা যেতে পারে:

  1. ন্যূনতম স্থানাঙ্ক (নীচে বাম-পয়েন্ট):
    • অক্ষাংশ: -4
    • দ্রাঘিমাংশ: -3
  2. সর্বাধিক স্থানাঙ্ক (উপরের ডানদিকের পয়েন্ট):
    • অক্ষাংশ: 4
    • দ্রাঘিমাংশ: 3

সুতরাং, আপনি যথাযথ আকারের এমকেকর্ডিনেটস্প্যান ব্যবহার করে কেন্দ্রের পয়েন্টের চারপাশে জুম স্তরগুলি নির্দিষ্ট করতে পারেন। গুগলের সংখ্যাসূচক জুম স্তরের অনুমান হিসাবে আপনি গুগল প্রদত্ত জুম স্তরের জন্য যে স্প্যান মাপগুলি ব্যবহার করে সেগুলি বিপরীত করতে পারে এবং সেই অনুসারে একটি স্প্যান তৈরি করতে পারে। (গুগল তাদের দৃশ্য অঞ্চলগুলিকে একইভাবে এম কে ম্যাপভিউর কেন্দ্র হিসাবে + স্প্যান হিসাবে বর্ণনা করে যাতে আপনি এই মানগুলি গুগল মানচিত্রের বাইরে টানতে পারেন।)

অঞ্চল সীমাবদ্ধ হিসাবে, আপনি ডাব্লু / এই প্রতিনিধি পদ্ধতি খেলতে পারেন:

mapView:regionWillChangeAnimated

যেমন অঞ্চলটিকে আপনার অনুমোদিত জুম স্তরে পুনরায় আকার দিন। (কীভাবে সারণী দর্শনগুলি আপনাকে প্রান্তটি স্ক্রোল করতে দেয়, তবে তারপরে রাবার ব্যান্ডটি আবার ফিরে আসবে)) তবে, আপনার মাইলেজটি ভিন্ন হতে পারে, কারণ আমি এ উদ্দেশ্যে এটি ব্যবহার করি নি।

বিটিডব্লিউ, ম্যাপকিটের বিভিন্ন দিকগুলিতে ওএস ৩.১-এ সুনির্দিষ্ট সংশোধন / উন্নতি রয়েছে যা আমাকে 3.0 এ ঝামেলা দিচ্ছিল।


@ ক্যালভিন, আপনি কীভাবে "গুগল প্রদত্ত জুম স্তরের জন্য যে স্প্যান মাপগুলি ব্যবহার করে এবং স্প্যান তৈরি করতে পারে" তার কীভাবে আরও বিশদ বর্ণনা করতে পারেন? আমার সত্যিই এটির দরকার আছে
স্কিফিল্ড ট্রান

118

আপনি যদি এমকেকর্ডিনেটস্প্যান সংজ্ঞায়নের পরিবর্তে সুস্পষ্ট জুম স্তরগুলি ব্যবহার করতে পছন্দ করেন তবে আমি একটি বিভাগ লিখেছিলাম যা এমকেম্যাপভিউয়ের জুম স্তর নির্দিষ্ট করার জন্য সমর্থন যোগ করে। কোডটি এখানে পাওয়া যাবে


4
ট্রয়ের ব্লগ পোস্টগুলি আমাকে ম্যাপকিট এবং গুগল ম্যাপ কীভাবে কাজ করে তার একটি দুর্দান্ত ধারণা দিয়েছে। আমি অত্যন্ত এটি পড়ার সুপারিশ।
অ্যারন

4
গিট: //github.com/jdp-global/MKMapViewZoom.git
jhndpope

5

স্প্যানটি অক্ষাংশ এবং দ্রাঘিমাংশের ডিগ্রিতে রয়েছে in পরিবর্তে MKCoordinateRegeion স্ট্রাক্ট নির্মাণের জন্য একটি পদ্ধতি রয়েছে যা তার পরিবর্তে দূরত্ব নেয়। এটি হতে পারে যে আপনি স্প্যানটি নির্দিষ্ট করতে MKCordordRegionMakeWithDistance ব্যবহার করছেন এবং তারপরে আপনি যখন এটি অঞ্চলডিজ চেঞ্জে পরীক্ষা করেন, আপনি ল্যাট / লম্বা স্প্যানটি দেখতে পাচ্ছেন, এটি এমকেসির্ডিনেটরেজিওন স্ট্রাক্টে কীভাবে সংরক্ষণ করা হয়।

যতদূর আমি জানি, এমকেম্যাপকিটের সাথে কাজ করার সময় পূর্ণসংখ্যার জুম স্তরগুলি উপলব্ধ বা কার্যকর হয় না। আমি ব্যক্তিগতভাবে স্প্যান পরিসংখ্যানগুলি ব্যবহার করতে পছন্দ করি, এটি আরও নমনীয়।

আপনি সর্বোচ্চ এবং সর্বনিম্ন জুম নির্দিষ্ট করতে পারবেন না এবং এটিকে হ্যাক করার কোনও উপায় আমার জানা নেই M


3

লিঙ্ক ক্যোরিস্ট্রিং পরিদর্শন করে মানচিত্রের জিএমএল.কম ব্যবহার করে কোনও অবস্থানের জন্য জুম স্তরের দ্রুত তুলনা দেখায় যে dx এবং dy স্প্যান মানগুলি 2 এর একটি ফ্যাক্টরের দ্বারা বৃদ্ধি পায়:

 (0.005334, 0.011834) starting span
 (0.010668, 0.023668) dx: x2, dy: x2 
 (0.021335, 0.047337) dx: x2, dy: x2
 (0.042671, 0.094671) dx: x2, dy: x2
  ...

2

এমকেম্যাপভিউতে ব্রেন্টের বিভাগটি ভালভাবে কাজ করে। যাইহোক, এটি প্রদর্শিত হয় যে এটি ম্যাপসাইজইনপিক্সেল গণনা করার সময় রেটিনা স্ক্রিন সহ নতুন ডিভাইসগুলিকে সমর্থন করার জন্য আপডেট করা হয়নি।

এই লাইনটি প্রতিস্থাপন করে এটি ঠিক করা যেতে পারে:

CGSize mapSizeInPixels = mapView.bounds.size;

এই লাইন সহ:

CGSize mapSizeInPixels = CGSizeMake(mapView.bounds.size.width * [UIScreen mainScreen].scale, mapView.bounds.size.height * [UIScreen mainScreen].scale);
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.