在MapQuest中捕获标记拖动时的经纬度

时间:2018-08-22 18:39:07

标签: javascript mapquest

我似乎找不到从MapQuest中现有标记中获取经度和纬度的方法。

我目前使用以下方法设置路线图:

var map = L.mapquest.map('map', {
    center: [selfLatitude, selfLongitude],
    layers: L.mapquest.tileLayer('map'),
    zoom: 13
});

L.mapquest.directions().route({
    start: [selfLatitude, selfLongitude],
    end: [otherLatitude, otherLongitude]
});

这将产生一个包含两个点及其之间方向的地图。

我能够在地图上移动end点,但想捕获经过修改latitudelongitude

使用mapquest.js javascript库从MapQuest地图中的各个标记定位并获取坐标的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

我认为这将是一个简单的解决方案,但是我在他们的文档中找不到任何轻松的东西。我试着挑选他们的例子,到处寻找信息。假设这行得通,但因为getLatLng()不是一个函数而不能:

  popup.on('dragend', function(event) {
    var marker = event.target;
    var position = marker.getLatLng().wrap();
    showLL(position, 'USER_DEFINED');
  });

在某个时候,我决定停止查看他们提供的文档,并尝试查看他们的Lat/Long finder example,并进一步查看返回的event.target对象,并尝试查找与经纬度相关的任何内容很长

我知道您要求一种“适当的”方法,但是老实说我找不到一个,并认为我还是应该分享。

以下不是def的官方方法,但是我相信它是有效的。出于某种原因,无论移动起点还是终点,都会触发moveend事件,但无论如何我只会记录结束纬度。

我注意到marker._layers[prop].locationIndex混合在obj层中,0似乎与开始标记相关,而1似乎指向结束标记。

这是我想出的:

let latLng1 = new L.LatLng(35.6009, -82.554);
let latLng2 = new L.LatLng(35.7796, -78.6382);

let map = L.mapquest.map('map', {
  center: latLng1,
  layers: L.mapquest.tileLayer('map'),
  zoom: 13
});

let directions = L.mapquest.directions();

directions.route({
  start: latLng1,
  end: latLng2
});

map.on('moveend', function(event) {
  let marker = event.target;
  for (let prop in marker._layers) {
    if (!marker._layers.hasOwnProperty(prop)) continue;

    // locationIndex- I am assuming 0 for start marker and 1 for end marker.
    if (marker._layers[prop].locationIndex === 1) {
      let latLong = marker._layers[prop]._latlng;
      console.log(latLong)
    }
  }
});
}