Я использую Leafletjs для отображения карты на моем сайте. Сейчас я начинаю использовать Vuejs, но получаю ошибки, потому что внезапно this
ссылается на экземпляр Vuejs.
Рассмотрим следующую функцию, которая прекрасно работает вне Vuejs (взято из здесь ):
var marker_a = new L.Marker(a, {draggable: true}).addTo(map);
marker_a.on('dragstart', dragStartHandler);
function dragStartHandler (e) {
var latlngs = polyline.getLatLngs(),
var latlng = this.getLatLng();
for (var i = 0; i < latlngs.length; i++) {
if (latlng.equals(latlngs[i])) {
this.polylineLatlng = i;
}
}
}
Но когда я использую его в Vuejs:
methods: {
dragStartHandler: function (e) {
var latlngs = this.polyline.getLatLngs();
var latlng = this.getLatLng();latlng
for (var i = 0; i < latlngs.length; i++) {
if (latlng.equals(latlngs[i])) {
this.polylineLatlng = i;
}
}
}
}
Вы можете видеть, что вместо polyline.getLatLngs()
я теперь использую this.polyline.getLatLngs()
, потому что теперь я загружаю polyline
из контекста Vuejs. Это прекрасно работает. К сожалению, this.getLatLng()
дает мне ошибку, говоря this.getLatLng is not a function
. Это имеет смысл, потому что я никогда не определял getLatLng()
в Vuejs. Я не уверен, как указать это на контекст Leaflet.
Может ли кто-нибудь указать мне правильное направление?