Vô hiệu hóa phóng to doubleclick trong OpenLayers 3


8

Tôi đã tìm kiếm nó trên toàn bộ web và cuối cùng tôi đã tìm thấy trên artamstrong.com cách vô hiệu hóa một tính năng duy nhất như "mouseWheelZoom".

Dưới đây là cách phóng to doubleclick trong OpenLayers 3:

var map = new ol.Map({
    controls : ol.control.defaults()
                .extend([ new ol.control.FullScreen() ]),
    interactions : ol.interaction.defaults({doubleClickZoom :false}),
    target : 'map',
    layers : [ new ol.layer.Tile({
            title : 'OpenStreetMaps',
            preload : Infinity,
            source : new ol.source.OSM(),
            visible : true
    }) ],
    view : new ol.View({
            center : ol.proj.transform([ 9.41, 48.82 ], 'EPSG:4326','EPSG:3857'),
            zoom : 12
    })
});

Điều đó thực sự đơn giản, chỉ cần nói với ol3 để đặt "doubleClickZoom" thành false:

interactions : ol.interaction.defaults({doubleClickZoom :false})

5
Xin chào Brain, Chào mừng bạn đến với GIS @ Se, đây là thông tin cực kỳ hữu ích, nhưng trang web này yêu cầu đăng các câu hỏi và câu trả lời cụ thể. Vui lòng chỉnh sửa câu hỏi của bạn để biến nó thành Câu hỏi và sau đó trả lời câu hỏi đó bằng giải pháp của bạn. Những người đăng câu hỏi có thể trả lời câu hỏi của riêng họ.
Đánh dấu Cupitt

Câu trả lời:


8

Nếu bạn muốn tắt doubleClickZoom sau khi khởi tạo bản đồ, đây là cách:

var dblClickInteraction;
// find DoubleClickZoom interaction
map.getInteractions().getArray().forEach(function(interaction) {
  if (interaction instanceof ol.interaction.DoubleClickZoom) {
    dblClickInteraction = interaction;
  }
});
// remove from map
map.removeInteraction(dblClickInteraction);

Bạn cũng có thể xóa hoặc thêm tương tác như PinchZoom, KeyboardZoom, v.v. với cùng một cách


Trong Mảng, bạn có thể sử dụng findthay vì forEach: const dblClickInteractio = map.getInteraction().getArray().find((interaction ) => { return interaction instanceof ol.interaction.DoubleClickZoom })
YairTawil

@YairTawil Tốt để biết. Nhưng, có một lợi thế để sử dụng findthay thế forEach?
Đuổi theo Choi

1
Chắc chắn, find sẽ phá vỡ vòng lặp ... forEach sẽ luôn chạy n lần
YairTawil

Nếu có nhiều tương tác, filtercũng có thể được sử dụng.
Đuổi theo Choi

1
Nên là map.getInterilities (). GetArray () với một 's' ở cuối getInterilities (), không phải getInteraction. Mặc dù thực sự là một câu trả lời rõ ràng hơn trong câu hỏi ....
mwarren 10/12/17

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.