当前位置:   article > 正文

openlayers 入门(16)比例尺控件_openlayer怎么获取比例尺

openlayer怎么获取比例尺
  1. <template>
  2. <div class="vm">
  3. <h2 class="h-title">比例尺控件 ScaleLine</h2>
  4. <select id="units" v-model="scaleplate">
  5. <option v-for="item in scaleplateList" :key="item.v">{{
  6. item.t
  7. }}</option>
  8. </select>
  9. <div id="map" class="map-x"></div>
  10. </div>
  11. </template>
  12. <script>
  13. import "ol/ol.css";
  14. import { Map, View } from "ol";
  15. import Tile from "ol/layer/Tile";
  16. import BingMaps from "ol/source/BingMaps";
  17. import * as control from "ol/control";
  18. import { fromLonLat } from 'ol/proj';
  19. export default {
  20. name: "ScaleLine",
  21. data() {
  22. return {
  23. map: null,
  24. scaleLineControl: new control.ScaleLine(),
  25. scaleplate: "度",
  26. scaleplateList: [
  27. {
  28. t: "度",
  29. v: "degrees",
  30. },
  31. {
  32. t: "英制英尺",
  33. v: "imperial",
  34. },
  35. {
  36. t: "美制英尺",
  37. v: "us",
  38. },
  39. {
  40. t: "海里",
  41. v: "nautical",
  42. },
  43. {
  44. t: "公制",
  45. v: "metric",
  46. },
  47. ],
  48. };
  49. },
  50. watch: {
  51. // 监听比例尺单位切换
  52. scaleplate(newVal, oldVal) {
  53. this.setScaleLine();
  54. },
  55. },
  56. methods: {
  57. initMap() {
  58. this.map = new Map({
  59. target: "map",
  60. // 添加控件
  61. controls: control.defaults().extend([
  62. this.scaleLineControl, // 比例尺
  63. ]),
  64. layers: [
  65. new Tile({
  66. source: new BingMaps({
  67. key:
  68. "AiZrfxUNMRpOOlCpcMkBPxMUSKOEzqGeJTcVKUrXBsUdQDXutUBFN3-GnMNSlso-",
  69. imagerySet: "Aerial",
  70. }),
  71. }),
  72. ],
  73. view: new View({
  74. // projection: "EPSG:4326", // 坐标系,有EPSG:4326和EPSG:3857
  75. center: fromLonLat([114.064839, 22.548857]),
  76. zoom: 6, // 地图缩放级别(打开页面时默认级别)
  77. }),
  78. });
  79. this.setScaleLine(); // 设置比例尺单位
  80. },
  81. setScaleLine() {
  82. // 设置比例尺单位
  83. // 从列表里找到当前单位
  84. let unit = this.scaleplateList.find((item) => {
  85. return item.t === this.scaleplate;
  86. });
  87. // 设置单位,注意unit.v的值,必须使用这些值
  88. this.scaleLineControl.setUnits(unit.v);
  89. },
  90. },
  91. mounted() {
  92. this.initMap();
  93. },
  94. };
  95. </script>
  96. <style></style>

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

闽ICP备14008679号