تقييد المنطقة التي يمكن للمستخدم الذهاب إليها في Mapview

StackOverflow https://stackoverflow.com/questions/5403733

سؤال

أنا أستخدم إصدارًا مخصصًا من عرض الخريطة (إصدار OSMDroid).أنا أستخدم مربعات مخصصة بداخله وأريد فقط أن يتمكن المستخدم من عرض المنطقة التي يوجد بها مربعاتي المخصصة.هل هناك طريقة لتعيين الحدود الطويلة بحيث لا تتجاوز هذه الحدود عند تحريك الخريطة؟

هل كانت مفيدة؟

المحلول 3

في حالة أنه يساعد أي شخص ....

لدي نوع من الحل الذي أستخدمه ، إنه يعمل بشكل جيد ، ولكن بالتأكيد يمكن أن يكون أفضل لأن الخريطة يمكن أن تذهب بعيدًا جدًا عن الشاشة قبل أن تقفز للخلف! إنه يستخدم خطوط العرض الطويلة ويعمل على تحديد مكان الخريطة ، لقد قمت بتعيين 4 إحداثيات وهي تقريبًا الزوايا الأربع للخريطة التي وجدتها تعمل بشكل أفضل إذا قمت بتعيينها قليلاً في الخريطة بدلاً من الزوايا بالضبط ، ثم أعمل على ما إذا لقد غادرت خطوط العرض الطويلة الشاشة تمامًا .. إذا كان الأمر كذلك ، فسوف ترتد في منتصف الطريق للخلف:

لقد تجاوزت عرض الخريطة وحدث OnTouch للخريطة Genacodicetagpre

يجب أن أشير إلى بعض الأشياء إذا كنت تفكر في استخدام هذا:

  1. لم أجد ضمانًا بأنه سيعمل في حالتك ويجب أن تستخدمها فقط كنقطة بداية.
  2. سيعمل فقط في المناطق الواقعة شمال خط الاستواء (على ما أظن) نظرًا للطريقة التي انتهيت بها من الحلقات!
  3. إنه يعمل على "الإجراء" لحدث اللمس ، لذا فهو يأخذ النقطة التي يرفع فيها المستخدم إصبعه عن الشاشة. هذا يعني أنه عندما تنقلب الخريطة تكون غير دقيقة تمامًا حيث لم أتمكن من معرفة مكان توقف الخريطة ، ولهذا السبب أوقفت التقليب عن طريق تجاوز حدث القذف وعدم القيام بأي شيء فيه .. هذا يجعل الخريطة ممزقة بعض الشيء!

إذا كان لدى أي شخص أي حلول أفضل أو يمكنه تحسين الكود الخاص بي ، فلا تتردد!

نصائح أخرى

تحديث: أعلم أن هذا سؤال قديم ، ولكن لدى osmdroid الآن طريقة setScrollableAreaLimit () التي ستحقق ما تبحث عنه.هناك أيضًا طريقة setMinZoomLevel () و setMaxZoomLevel () لتقييد مستويات التكبير / التصغير بسهولة.

الإجابة الأصلية:

يرجى متابعة:

http://code.google.com/p/osmdroid/القضايا / التفاصيل؟ معرف= 209

تم إنشاء تصحيح بالفعل ، ومن المحتمل أن يتم دمجه قريبًا.

تم نشر هذا عبر موضوع أوسمدرويد.هناك الآن قوائم أ BoundedMapView الطبقة، التي تنفذ التصحيح المذكور أعلاه.

بالنسبة لأولئك الذين يستخدمون استخدام .jar أو غير ذلك على دراية بالبقع ، قمت بتجميع فئة فرعية من MapView تدعم الحد من عرض المستخدم في منطقة معينة.

يمكن العثور على تفاصيل حول كيفية استخدامه ، إن لم يكن واضحًا ، http://www.sieswerda.net/2012/08/15/boundedmapview-a-mapview-with-limits/

أنا أبحث عن نفس الشيء بالضبط.

أفضل ما لدي هو إضافة تراكب يمتد boolean onScroll(...).إذا عاد هذا صحيحا، فسيتم إلغاء التمرير.

هذا هو بالضبط ما أريده، باستثناء شيء واحد:قذف / عبها.يمكن استخدام نفس الطريقة لإلغاء أحداث القذف، على الرغم من أنك لن تسمع عنها إلا في بداية القذف.

من الناحية المثالية، ستكون قادرًا على الاستماع إلى computeScroll() الطريقة، والحد من (x, y) من التمرير، على أساس mScroller.getCurX() و mScroller.getCurY().

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top