قم بتحميل كائنات إضافية من البيانات الأساسية عندما يتحرك المستخدم MKMAPView

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

سؤال

مع Mapkit في SDK iPhone 3.0، يمكنك إنشاء كائنات تتفق مع بروتوكول Mkannotation. تحميل هذه على mkmapview سهل للغاية. ومع ذلك، عندما يقوم المستخدم بالتمرير في MKMapView، حان الوقت لتحميل التعليقات التوضيحية الجديدة. مكان محتمل لطلب الكائنات الجديدة سيكون في Mapview: RegionDiDchangeanimated: والتي يتم استدعاءها عند تغيير منطقة الخريطة، ثم قم بإضافة / استبدال التعليقات التوضيحية مع تلك الجديدة.

على وجه التحديد، أود الاستعلام عن البيانات الأساسية لاسترداد جميع الكائنات الموجودة داخل التيار mkcoordinateregion. (mapview.region) حتى أحصل فقط على الكائنات التي سيتم عرضها على الشاشة فقط. تحتوي الكائنات الموجودة في البيانات الأساسية على سمات خطوط الطول والعرض (ويتم تعريف سمة Cllocation في الفئة ".m / .h التي يمكنني ملءها يدويا من ذلك) واستخدم هذا للحصول على nsprecticate لإيجاد الكائنات القريبة.

نظرا لطبيعة عدد الكائنات الموجودة في قاعدة بيانات البيانات الأساسية، لا يمكننا تحميل جميع الكائنات الكلام الكلام البياني وإلا فسوف نفاد الذاكرة (وسيكون بطيئا بشكل مفرط).

كيف يمكنني استرداد الكائنات التي لديها مواقع لها مواقع في حدود mapeview الحالية؟

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

المحلول

آسف اللغة الإنجليزية ليست لغتي الأولى ..

بمجرد اختفاء المستخدم لأسفل أو أعلى .. ستتغير قيم المنطقة، وخاصة Latitudedelta و Longitudedelta من reviniedidchangeanimated.. وبعد من هناك، يمكنك الحصول على حدود mapview الحالي .. (minlat، minlong، maxlat، maxlong)

minlat = current_coordinate_lat - latitudeDelta; //note everything is in dd (decimal degrees)

maxlat = current_coordinate_lat + latitudeDelta;

minlong = ...

maxlong = ...

نظرا لأن لديك حدود محسوبة بالفعل، يمكنك معالجة الكائن الذي يحتاج إلى إظهاره، ثم أضف التعليق التوضيحي في الخريطة. لقد جربت القيم أدناه ..

انظر الصورة هنا .. http://img43.imageshack.us/img43/703/picture1txe.png.

من هناك .. يمكنني القيام ببيان Sqlite3 SQL للحصول على النقاط داخل تلك الحدود ..

SELECT * FROM pois WHERE categ_id = %@ AND (sat_latitude > %f AND sat_latitude < %f) AND (sat_longitude > %f AND sat_longitude < %f)

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