سؤال

لدي خريطة مصنوعة باستخدام leaflet.js مع طبقة GeoJSON تتكون من 70 مضلعًا.في كل مرة ينقر فيها المستخدم على مضلع، يتم تمييزه وتمتلئ اللوحة الجانبية بالبيانات ويتم فتحها:

function clickFeature(e) {
    var layer = e.target;
        layer.setStyle({
        weight: 3,
        color: '#666',
        dashArray: '',
        fillOpacity: 0.7
    });

    info.update(layer.feature.properties);
    $( "#mypanel" ).panel("open");
}

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

لقد حاولت ذلك، لكنه لا يعمل (لم تعد اللوحة محدثة أو مفتوحة):

var lastClickedLayer;
function clickFeature(e) {
    geojson.resetStyle(lastClickedLayer);
    var layer = e.target;
        layer.setStyle({
        weight: 3,
        color: '#666',
        dashArray: '',
        fillOpacity: 0.7
    });

    info.update(layer.feature.properties);
    $( "#mypanel" ).panel("open");
    layer = lastClickedLayer;
}

أي مساعدة موضع تقدير كبير.

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

المحلول

مهمتك خاطئة، يجب أن تكون كذلك

lastClickedLayer = layer;

يجب عليك أيضًا إضافة علامة اختيار إضافية إذا lastClickedLayer تم تعيينه بالفعل:

if(lastClickedLayer){
   geojson.resetStyle(lastClickedLayer);
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top