Kích hoạt sự kiện nhấp chuột trên bản đồ Tờ rơi?


14

Có thể thực hiện một sự kiện nhấp chuột xảy ra tại một lat / lon cụ thể trên bản đồ tờ rơi không?

Tôi muốn làm cho một cửa sổ bật lên xuất hiện được liên kết với một điểm tại một vị trí cụ thể.

Tôi đã thử một số kết hợp map.fireEvent('click', latLon)map.fire('click', latLon)nhưng tôi không thể tìm thấy một ví dụ hoặc tài liệu tham khảo mô tả phương pháp này. Đây có phải là một số điều có thể được thực hiện?

Một cách tiếp cận mà tôi đã thử (và cách nào hiệu quả) là xác định đối tượng trong lớp tờ rơi và kích hoạt sự kiện nhấp bằng cách sử dụng layer[id].fireEvent('click'). Tuy nhiên, điều này đòi hỏi tôi phải biết ID đối tượng và tôi muốn có thể chỉ sử dụng lat / lon để kích hoạt nhấp chuột này.


Tôi muốn mở một cửa sổ bật lên tại vị trí được nhấp và tôi không muốn thêm điểm đánh dấu hoặc thêm cửa sổ bật lên mới tại vị trí này. Những gì tôi đang cố gắng làm là bắn một sự kiện nhấp chuột vào một lat / lon cụ thể trong đó một điểm đã tồn tại và để kích hoạt cửa sổ bật lên đã tồn tại.

Câu trả lời:


21

Tôi nghĩ rằng bạn đang nghĩ nó phức tạp hơn bạn nghĩ!

Thử đi:

var popLocation= new L.LatLng(-42.8585,147.2468);
var popup = L.popup()
    .setLatLng(popLocation)
    .setContent('<p>Hello world!<br />This is a nice popup.</p>')
    .openOn(map);

Nguồn từ tài liệu tuyệt vời .

Tôi biết những gì bạn muốn làm bây giờ. Đây là cách bạn có thể mở một cửa sổ bật lên tại một vị trí được nhấp tùy ý:

map.on('click', function(e) {        
        var popLocation= e.latlng;
        var popup = L.popup()
        .setLatLng(popLocation)
        .setContent('<p>Hello world!<br />This is a nice popup.</p>')
        .openOn(map);        
    });

Chỉnh sửa cuối cùng: Tôi nghiêm túc nghĩ rằng nếu bạn muốn tổ chức một sự kiện 'nhấp chuột' để đạt được điều gì đó mà thiết kế của bạn cần phải xem xét. Nếu bạn thực sự muốn làm điều đó, có vẻ như có thể trong javascript . Tuy nhiên, đây không phải là một câu hỏi về GIS.


Cảm ơn vì đã góp ý. Bạn có biết nếu có thể kích hoạt điều này, mà không cần tạo một cửa sổ bật lên? Trong trường hợp của tôi, tôi thêm 70 điểm vào bản đồ (ràng buộc cửa sổ bật lên) và muốn kích hoạt một trong những cửa sổ bật lên này sau.
djq

Bạn có thể tạo tất cả các cửa sổ bật lên, lưu trữ chúng bằng cách nào đó / ở đâu, sau đó chỉ cần mở chúng trên bản đồ. Đọc tài liệu và thử nó. Tôi không hiểu bạn đang cố làm gì. Có lẽ bạn nên chỉnh sửa câu hỏi của bạn để xác định điểm cuối của bạn?
Alex Leith

Tôi hiểu cách mở cửa sổ bật lên nếu nó được lưu trữ trong một mảng, tôi muốn thử mở nó dựa trên việc nhấp vào một địa điểm trên bản đồ. Tôi sẽ thử và làm cho điều này rõ ràng hơn trong câu hỏi.
djq

Vì vậy, bạn muốn mở cửa sổ bật lên gần nhất để nhấp chuột? Hoặc mở một cửa sổ bật lên tại vị trí được nhấp? Và bạn không muốn đánh dấu?
Alex Leith

Tôi muốn mở một cửa sổ bật lên tại vị trí được nhấp và tôi không muốn đánh dấu.
djq

1

Tôi đang sử dụng câu trả lời khác trong bản đồ tờ rơi để cho phép người dùng gửi cho tôi các yêu cầu tính năng dựa trên vị trí được nhấp trong bản đồ, sau đó mở biểu mẫu google điền sẵn với độ trễ từ vị trí đó. Những điểm đó sau đó được hiển thị trên bản đồ bằng sheetsee / tabletop. Tôi đã thêm map.hasLayer (lớp yêu cầu của tôi) để người dùng không phải lúc nào cũng nhìn thấy cửa sổ bật lên khi nhấp vào bản đồ:

    map.on('click', function(e) { 
    if (map.hasLayer(requests)) {
        var requestform = e.latlng;
        var formpopup = L.popup();
        .setLatLng(requestform)
        .setContent('<a href=" google form ' + e.latlng.lat + 
                    '" target="_blank">Form</a>') 
        .openOn(map);
    }
});
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.