سؤال

ولقد يبدو أن ضرب خلل أو لقد أغفلت شيئا.

وأنا كتبت بعض التعليمات البرمجية التي تسرد من خلال كافة الميزات متجه على طبقة OpenLayers ناقلات - لمعرفة ما اذا كان الماوس داخل ميزة ناقلات - إذا كان الأمر كذلك فإنه يعرض بعض المعلومات على أساس الميزة

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

ومشكلتي هي أن طريقة .containsPoint يبدو أن استخدام احداثيات من قبل "عموم". بعد التكبير أو التصغير يبدو الهندسة ليكون في المكان المناسب و.containsPoint هو يعمل بشكل صحيح عندما موجة الماوس فوق الخريطة.

هل أنا بحاجة إلى القيام بشيء ما بعد انتقادات الخريطة لتحديث شيء (هندسة الميزة)

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

المحلول

وأنا أدرك هذا السؤال تمت زيارتها تقريبا انها ميلاده الأول، وأنه قد لا تكون صالحة بعد الآن، ولكن سأعطيك النار على الإجابة على أي حال.

وOpenLayers.Control.DragPan يجعل استدعاء الخريطة عندما كنت فعلت بالغسل. إذا قمت بالتدقيق في وظيفة OpenLayers.Map القومية، وسترى هذا التعليق داخل:

// only call setCenter if not dragging or there has been a change

والمنطق التالية في وظيفة يعكس هذا التعليق.

ولذا نعم، في كل مرة كنت فعلت بالغسل ما عليك القيام به شيئا مثل:

dragpan.handler.up = function(evt)
{
    dx = dragpan.handler.last.x - evt.x;
    dy = dragpan.handler.last.y - evt.y;
    var centerPx = map.getViewPortPxFromLonLat(map.getCenter());
    var newCenterPx = centerPx.add(dx, dy);
    var newCenterLonLat = map.getLonLatFromViewPortPx(newCenterPx);
    map.setCenter(map.getCenter() + dragpan.handler.xy);
}

... وأشياء يجب أن تعمل بطريقة سحرية بالنسبة لك.

نصائح أخرى

وبدون رمز عينة مقتطف من الصعب جدا الإجابة على هذا. OpenLayers غير قادرة على تحديد كائنات متعددة على زر الماوس. هل حاولت OpenLayers 2.8 بالفعل؟

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