关键词搜索

源码搜索 ×
×

Leaflef笔记-使用leaflet-tilelayer-wmts插件获取地图及坐标(含错误分析思路)

发布2019-09-07浏览9713次

详情内容

目录

 

 

如何调用插件并实现功能

对WMTS服务的进一步了解及可能会遇到的问题


 

如何调用插件并实现功能

首先说明下本篇博文的环境,本篇博文利用了Geoserver,搭建了一个中国地图的WMTS服务,地图层级为4-9级。

详细搭建过程请参考这篇博文:https://blog.csdn.net/qq78442761/article/details/100581622

下面来个演示!

当点击地图!

使用这功能需要如下的过程:

          1. 下载leaflet-tilelayer-wmts插件;

           2. 使用插件发送请求(本博文下一节将会给出这个请求的分析)!

下载其插件!

看看官方给的例子(下面的来自于官方的Github说明)

  1. <html>
  2. <head>
  3. <title>Demo leaflet.TileLayer.WMTS</title>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width">
  6. <link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-0.7.2/leaflet.css" />
  7. <script src="http://cdn.leafletjs.com/leaflet-0.7.2/leaflet.js"></script>
  8. <script src="https://rawgithub.com/mylen/leaflet.TileLayer.WMTS/master/leaflet-tilelayer-wmts.js"></script>
  9. </head>
  10. <body>
  11. <div id="map" style="height: 100%; width: 100%"></div>
  12. <script>
  13. // You can get a key here: http://api.ign.fr/accueil (french)
  14. var ignKey = "lqp42l06r6pyp1ll2uuzei4r";
  15. /** Define the layer type
  16. * GEOGRAPHICALGRIDSYSTEMS.MAPS
  17. * GEOGRAPHICALGRIDSYSTEMS.MAPS.SCAN-EXPRESS.CLASSIQUE
  18. * GEOGRAPHICALGRIDSYSTEMS.MAPS.SCAN-EXPRESS.STANDARD
  19. */
  20. var layerIGNScanStd = "GEOGRAPHICALGRIDSYSTEMS.MAPS.SCAN-EXPRESS.STANDARD";
  21. // The WMTS URL
  22. var url = "http://wxs.ign.fr/" + ignKey + "/geoportail/wmts";
  23. var ign = new L.TileLayer.WMTS( url ,
  24. {
  25. layer: layerIGNScanStd,
  26. style: "normal",
  27. tilematrixSet: "PM",
  28. format: "image/jpeg",
  29. attribution: "<a href='https://github.com/mylen/leaflet.TileLayer.WMTS'>GitHub</a>&copy; <a href='http://www.ign.fr'>IGN</a>"
  30. }
  31. );
  32. var map = L.map('map').setView([48.505, 3.09], 13);
  33. L.control.scale({'position':'bottomleft','metric':true,'imperial':false}).addTo(map);
  34. map.addLayer(ign);
  35. var baseLayers = {"Carte IGN" : ign};
  36. L.control.layers(baseLayers, {}).addTo(map);
  37. </script>
  38. </body>
  39. </html>

从中,可以知道,只要指定layer及url即可完成功能。

所以就有了本人下面的代码

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>Hello World</title>
  5. <meta charset="utf-8" />
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <link rel="shortcut icon" type="image/x-icon" href="docs/images/favicon.ico" />
  8. <link rel="stylesheet" href="leaflet.css" />
  9. <script src="leaflet.js"></script>
  10. <script src="leaflet-tilelayer-wmts-src.js"></script>
  11. <style>
  12. html, body {
  13. height: 100%;
  14. margin: 0;
  15. }
  16. #map {
  17. width: 100%;
  18. height: 100%;
  19. }
  20. </style>
  21. </head>
  22. <body>
  23. <div id='map'></div>
  24. <script type="text/javascript">
  25. var ign = new L.TileLayer.WMTS( "http://xxx.xxx.xxx.xxx:8080/geoserver/gwc/service/wmts" ,
  26. {
  27. layer: 'GG_9:gg_9',
  28. tilematrixset: "EPSG:900913",
  29. Format : 'image/png',
  30. TileMatrix: 'EPSG:900913:8'
  31. }
  32. );
  33. var map = L.map('map', {
  34. minZoom: 4,
  35. maxZoom: 9
  36. }).setView([32, 118], 8);
  37. L.control.scale({'position':'bottomleft','metric':true,'imperial':false}).addTo(map);
  38. map.addLayer(ign);
  39. map.invalidateSize(true);
  40. var popup = L.popup();
  41. function onMapClick(e) {
  42. popup
  43. .setLatLng(e.latlng)
  44. .setContent("You clicked the map at " + e.latlng.toString())
  45. .openOn(map);
  46. }
  47. map.on('click', onMapClick);
  48. </script>
  49. </body>
  50. </html>

这里使用了popup,当点击了地图后,就会响应onMapClick函数,就会探出一个框,这个框里面有其坐标。

 

对WMTS服务的进一步了解及可能会遇到的问题

这里,先分析下使用Geoserver浏览地图(请求的也是WMTS服务)。

这里一定要对数据敏感!这是成为一名合格的程序员必备的技能。

可以看到,当鼠标拖动,或者滚动转轮的时候就会发送请求(点进去看可以知道是Get请求)

其中200为正常,返回小的瓦片,400为参数错误,通过Type可以知道估计是错误的细节,点进去果然有相关细节!

从中可以知道有个Row9范围不对,应该是10-14之间的数。

来查看下请求!

从中我们就知道这个不对。

所以在自己调用WMTS服务后,可以根据自己的需要,调整参数!

 

 

相关技术文章

点击QQ咨询
开通会员
返回顶部
×
微信扫码支付
微信扫码支付
确定支付下载
请使用微信描二维码支付
×

提示信息

×

选择支付方式

  • 微信支付
  • 支付宝付款
确定支付下载