2016-05-30 9 views
7

Kullanıcıların sağ tıklattıkları yerlerin harita koordinatlarını almak için Leaflet'ı kullanmaya çalışıyorum. Broşür API'sından geçiyorum ve şu ana kadar contextmenu etkinliğini dinlemem gerektiğini ve tıklandığında koordinatları almak için mouseEventToLatLngmethod'u kullanmam gerektiğini anladım. Ancak, kodumdan geçip kodumu ayıkladığımda, erişilebilir bir latLng değişkeni her yerde görmüyorum. API’da bir şeyi özledim mi?Harita üzerindeki koordinatları hazırla:

function setMarkers() { 
     document.getElementById("transitmap").addEventListener("contextmenu", function(event) { 
      // Prevent the browser's context menu from appearing 
      event.preventDefault(); 

      var coords = L.mouseEventToLatLng(event); 
     }); 
    }; 
+0

Ne istediğiniz her yerden erişilebilir değişkeni "Coords" yapmaktır? –

+0

Aslında, bu işlevin içinden kozlara erişmek için gidiyorum. Sorun, kodu çalıştırdığımda, konsolun bana 'mouseEventToLatLng tanımlı değil 'diyen bir hata mesajı veriyor. – tylerbhughes

cevap

6

Almak istediğiniz şey mousemove olaydır. Bu sağ tıklama olayın

var lat, lng; 

map.addEventListener('mousemove', function(ev) { 
    lat = ev.latlng.lat; 
    lng = ev.latlng.lng; 
}); 

document.getElementById("transitmap").addEventListener("contextmenu", function (event) { 
    // Prevent the browser's context menu from appearing 
    event.preventDefault(); 

    // Add marker 
    // L.marker([lat, lng], ....).addTo(map); 
    alert(lat + ' - ' + lng); 

    return false; // To disable default popup. 
}); 
+0

Ama kullanım durumlarımdan biri, haritayı sağ tıklatmak için sol tıklamayı kullanmaya devam edebilmem için haritayı sağ tıklatmaktır. Eğer mousemove kullanırsam, fare haritanın etrafında hareket ettiğinde işaretleyiciyi sürekli olarak sıfırlar. Snippet'inizle ilgili bir şeyi yanlış anladım mı? – tylerbhughes

+0

@RandomlyKnighted Haritanın 'mousemove' etkinliği sürekli olarak işaretleyiciyi sıfırlamayacak. Haritayı hareket ettirmek için sol tıklama özelliğini de kullanabilirsiniz. Bu temelde ne yapar, haritadaki imlecin nerede olduğunu ve "latlng" ye çevirmektir. Ardından, haritayı sağ tıkladığınızda, yalnızca "latlng" nin olduğu işaretçiyi oluşturmalıdır. – choz

+1

Çok yardımcı oldu! – tylerbhughes