当前位置:   article > 正文

leaflet—marker总结_leaflet marker

leaflet marker

今天公司的app需要完成一个需求:

在地图上通过自己手动添加一个marker点,然后将坐标等数据(经纬度)传给另个方法中,去获取地理编码信息。最后将坐标信息和地理编码信息以及手动添加的相关点数据一起传给后台去存储。并且在查看信息的时候定位到该坐标位置。

分析:

0.按钮触发

1.需要在地图上获取人手点击的位置(经纬度)

2.将经纬度传给marker并在地图上生成

3.并且marker点可以进行拖拽

4.给marker点添加事件进行跳转

 

在网上看见了其他人的教程:

            Leaflet监听点击事件并弹出Popup

https://malagis.com/leaflet-note-10-click-show-lan-lat.html

  1. var map = L.map('map-container').setView([36.52,120.31], 7);
  2. var tileAddress = 'https://api.mapbox.com/styles/v1/yqcim/';
  3. tileAddress += 'cizh1ma3400ez2so5x1anhuzo/tiles/256/{z}/{x}/{y}';
  4. tileAddress += '?access_token=pk.eyJ1IjoieXFjaW0iLCJhIjoiY2l6ZmhnZjEx';
  5. tileAddress += 'MDBhajJ4cGxnNGN5MnhpdCJ9.pcZtdfk8mSFboCdwqkvW6g';
  6. var attribution = 'Map data &copy; <a href="http://openstreetmap.org">';
  7. attribution += 'OpenStreetMap</a> contributors, '
  8. attribution += '<a href="http://creativecommons.org/licenses/by-sa/2.0/">';
  9. attribution += 'CC-BY-SA</a>, ';
  10. attribution += 'Imagery © <a href="http://mapbox.com">Mapbox</a>';
  11. L.tileLayer(tileAddress, {
  12. maxZoom: 18,
  13. attribution: attribution,
  14. id: 'mapbox.streets'
  15. }).addTo(map);
  16. // use event
  17. var mypop = L.popup();
  18. map.on('click', function(e) {
  19. var content = '你临幸了这个点:<br>';
  20. content += e.latlng.toString();
  21. mypop.setLatLng(e.latlng)
  22. .setContent(content)
  23. .openOn(map);
  24. });

这里监听事件和前文中的方法一致,使用on方法对地图实例mclick事件做监听。在点击的时候创建一个Popup,然后将Popup内容动态设置成点击位置的经纬度。

Leaflet marker拖拽

https://www.cnblogs.com/CoffeeEddy/p/9975801.html

  1. var marker1 = L.marker([30.75, 120.75]).addTo(this.map);
  2. var marker2 = L.marker([30.76, 120.76], { draggable: true }).addTo(this.map);
  3. //拖拽结束
  4. marker2.on('dragend', function (event) {
  5. var position = marker1.getLatLng();
  6. console.log('实时坐标:' + marker2.getLatLng());
  7. })
  8. //marker1.on('moveend ', function (e) {
  9. // console.log(e.target._latlng);
  10. //});
  11. $('#ctrlDragge').on('change', function () {
  12. var isCheck = this.checked;
  13. if (isCheck) {
  14. marker1.dragging.enable();
  15. } else {
  16. marker1.dragging.disable();
  17. console.log(marker1.getLatLng());
  18. }
  19. });

结合以上分析

我得出以下代码

  1. var mypop = L.popup();
  2. map.on('click', function(e) {
  3. var content = '你点击了这个点:<br>';
  4. content += e.latlng.toString();
  5. var lat=e.latlng.lat;
  6. var lng=e.latlng.lng;
  7. mypop.setLatLng(e.latlng)
  8. .setContent(content)
  9. .openOn(map);
  10. var marker =L.marker([lat,lng], { draggable: true }).addTo(map);
  11. //拖拽结束
  12. marker.on('dragend', function (event) {
  13. console.log('实时坐标:' + marker.getLatLng());
  14. })
  15. });

我使用on对地图触控进行监听

将点击的点坐标传递给marker然后在地图上显示

实现点击后可以拖拽,并记录坐标位置

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/234817
推荐阅读
相关标签
  

闽ICP备14008679号