vue项目引入百度地图BMapGL鼠标绘制和BMap辅助工具

下面将详细说明如何在Vue项目中引入百度地图BMapGL鼠标绘制和BMap辅助工具。

步骤一:安装依赖

首先,需要在项目中安装百度地图JavaScript API,具体代码如下所示:

npm install bmapgl --save

步骤二:引入百度地图相关的JS和CSS文件

在Vue项目中,可以在index.html文件中引入:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>vue-bmap-demo</title>
    <script type="text/javascript" src="https://api.map.baidu.com/api?v=1.0&type=webgl&ak=Your-ak"></script>
    <link rel="stylesheet" href="https://api.map.baidu.com/library/DrawingManager/1.4/src/DrawingManager_min.css" />
    <link rel="stylesheet" href="https://api.map.baidu.com/library/SearchInfoWindow/1.4/src/SearchInfoWindow_min.css" />
    <script src="https://api.map.baidu.com/library/DrawingManager/1.4/src/DrawingManager_min.js"></script>
    <script src="https://api.map.baidu.com/library/SearchInfoWindow/1.4/src/SearchInfoWindow_min.js"></script>
  </head>
  <body>
    <div id="app"></div>
  </body>
</html>

其中,Your-ak需要替换为自己申请的百度地图API Key。

步骤三:编写代码

在Vue组件中,可以使用BMapGL来创建地图,同时也可以添加BMapGL的扩展功能。

例如,为地图添加鼠标绘制:

<template>
  <div id="map" style="height: 100vh;"></div>
</template>

<script>
import BMapGL from "BMapGL";
import "BMapGL/lib/DrawingManager";
import "BMapGL/lib/SearchInfoWindow";

export default {
  name: "bmap",
  data() {
    return {
      map: null,
      drawingManager: null,
      searchInfoWindow: null,
    };
  },
  mounted() {
    this.initMap();
    this.initDrawingManager();
  },
  methods: {
    initMap() {
      this.map = new BMapGL.Map("map"); // 创建地图对象
      this.map.centerAndZoom(new BMapGL.Point(116.404, 39.915), 12); // 初始化地图,设置中心点和缩放级别
    },
    initDrawingManager() {
      const options = {
        enableDrawingTool: true, // 是否启用绘制工具
        drawingToolOptions: {
          anchor: BMAP_ANCHOR_TOP_RIGHT, // 位置
          offset: new BMapGL.Size(5, 5), // 偏移量
          drawingModes: [
            BMAP_DRAWING_MARKER, // 标注
            BMAP_DRAWING_CIRCLE, // 圆形
            BMAP_DRAWING_POLYLINE, // 折线
            BMAP_DRAWING_POLYGON, // 多边形
            BMAP_DRAWING_RECTANGLE, // 矩形
          ],
        },
        markerOptions: {
          icon: new BMapGL.Icon(
            "http://api.map.baidu.com/img/markers.png",
            new BMapGL.Size(23, 25),
            {
              offset: new BMapGL.Size(10, 25),
              imageOffset: new BMapGL.Size(0, 0 - 10 * 25),
            }
          ),
        },
        circleOptions: {
          strokeWeight: 2,
          fillColor: "#fff",
          strokeColor: "#000",
          fillOpacity: 0.5,
          strokeOpacity: 0.5,
        },
        polylineOptions: {
          strokeWeight: 2,
          strokeColor: "#000",
          strokeOpacity: 0.5,
        },
        polygonOptions: {
          strokeWeight: 2,
          strokeColor: "#000",
          strokeOpacity: 0.5,
          fillColor: "#fff",
          fillOpacity: 0.5,
        },
        rectangleOptions: {
          strokeWeight: 2,
          strokeColor: "#000",
          strokeOpacity: 0.5,
          fillColor: "#fff",
          fillOpacity: 0.5,
        },
      };
      // 创建鼠标绘制管理器实例
      this.drawingManager = new BMapGL.DrawingManager(this.map, options);
      // 添加鼠标绘制工具监听事件,用于获取绘制结果
      this.drawingManager.addEventListener("overlaycomplete", this.onDrawOverlayComplete);
    },
    onDrawOverlayComplete(e) {
      console.log(`绘制模式:${e.drawingMode}`); // 打印绘制模式,例如marker、circle等
      console.log(`绘制结果:${JSON.stringify(e.overlay.getPath())}`); // 打印绘制的结果,例如折线或多边形的点集
    },
  },
};
</script>

在Vue组件中,还可以添加BMapGL的搜索框功能:

<template>
  <div id="map" style="height: 100vh;"></div>
</template>

<script>
import BMapGL from "BMapGL";
import "BMapGL/lib/DrawingManager";
import "BMapGL/lib/SearchInfoWindow";

export default {
  name: "bmap",
  data() {
    return {
      map: null,
      searchInfoWindow: null,
    };
  },
  mounted() {
    this.initMap();
    this.initSearchInfoWindow();
  },
  methods: {
    initMap() {
      this.map = new BMapGL.Map("map");
      this.map.centerAndZoom(new BMapGL.Point(116.404, 39.915), 12);
      this.map.enableScrollWheelZoom(true);
    },
    initSearchInfoWindow() {
      // 创建搜索信息窗口实例
      this.searchInfoWindow = new BMapGL.SearchInfoWindow(this.map, "", {
        title: "搜索结果", // 窗口标题
        enableAutoPan: true, // 是否可以自动调整窗口位置
        searchTypes: [
          BMAPLIB_TAB_SEARCH, // 关键字搜索
          BMAPLIB_TAB_TO_HERE, // 到这里去
          BMAPLIB_TAB_FROM_HERE, // 从这里出发
        ],
      });
      // 添加地图上的标注,并为标注添加click事件,用于显示搜索信息窗口
      const point = new BMapGL.Point(116.404, 39.915);
      const marker = new BMapGL.Marker(point);
      this.map.addOverlay(marker);
      marker.addEventListener("click", () => {
        this.searchInfoWindow.open(point); // 显示搜索信息窗口
      });
    },
  },
};
</script>

步骤四:运行项目

最后,运行Vue项目即可看到地图及其扩展功能的效果。

以上是关于如何在Vue项目中引入百度地图BMapGL鼠标绘制和BMap辅助工具的详细攻略,希望能对您有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue项目引入百度地图BMapGL鼠标绘制和BMap辅助工具 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • IE6/IE7下绝对定位position:absolute和margin的冲突问题解决

    针对IE6/IE7下绝对定位position:absolute和margin的冲突问题,一般可以采取以下三种解决方式: 解决方式一:使用相对定位做包裹层 首先,我们可以为需要布局的元素外层再套一层div,设置这个包裹层为position:relative; <div style="position:relative;"> &l…

    css 2023年6月9日
    00
  • Vue组件实现景深卡片轮播示例

    下面是详细的“Vue组件实现景深卡片轮播示例”的攻略。 什么是景深卡片轮播 景深卡片轮播是一种卡片轮播式的组件,与一般的卡片轮播不同之处在于它可以在拖动卡片时产生景深效果,即中心卡片会放大,两侧卡片会逐渐缩小。这种效果能够提升用户体验,使得轮播更加流畅自然。 如何实现景深卡片轮播 Vue组件可以很方便地实现景深卡片轮播。我们需要进行以下几个步骤: 1.组件基…

    css 2023年6月11日
    00
  • 使用css3制作齿轮loading动画效果

    下面是制作齿轮loading动画效果的完整攻略。 1. 准备工作 在制作之前首先需要进行准备工作: 确定齿轮的大小和数量 选择合适的颜色和样式 编写 HTML 结构 在 HTML 结构中,我们需要定义一个外层盒子和多个齿轮的盒子。代码如下: <div class="gear-group"> <div class=&quo…

    css 2023年6月10日
    00
  • 浅析Bootstrap缩略图组件与警示框组件

    浅析Bootstrap缩略图组件与警示框组件 Bootstrap是一个经典的前端框架,提供了许多实用的组件和工具。本文将为大家介绍Bootstrap中的缩略图组件和警示框组件。 缩略图组件 在Bootstrap中,缩略图组件一般用于显示一组图片或者视频的缩略图,非常适合用于多媒体网站、电商网站等等。 基本用法 缩略图组件的基本代码如下: <div cl…

    css 2023年6月11日
    00
  • 浅谈css双飞翼布局和圣杯布局

    CSS双飞翼布局和圣杯布局都是常见的网页布局方式,它们都是基于盒子模型的布局方式。下面我们将详细讲解这两种布局的实现方法和优缺点。 CSS双飞翼布局 简介 CSS双飞翼布局是一种三栏布局方式,它使用了相对定位和自身的负边距来实现。与传统的三栏布局方式不同,CSS双飞翼布局没有使用浮动或者定宽度的方式来实现。 实现方法 HTML结构 <div class…

    css 2023年6月9日
    00
  • 网页加载速度优化技巧的方案详解

    网页加载速度优化技巧的方案详解 在网站开发过程中,优化网页加载速度是一个非常重要的方面。快速的页面响应能够提高用户的体验和满意度,而慢速的加载速度则可能导致用户流失。因此我们需要深入了解网页加载速度优化的技巧和方案。 压缩和优化图片 图片通常是网页加载速度较慢的主要原因之一。为了优化图片的加载速度,我们可以采用以下两种方法: 图片压缩优化:使用一些优秀的图片…

    css 2023年6月10日
    00
  • CSS代码编写中视觉格式化模型的学习教程

    学习视觉格式化模型 CSS代码编写中的视觉格式化模型,是指CSS用于控制HTML元素在页面中如何排列和呈现的方式。学习视觉格式化模型需要掌握CSS选择器、盒模型、定位和浮动等基本知识。 首先,我们需要了解CSS选择器。选择器是来定位HTML元素的,它可以按照元素的标签名、类名、ID等属性来选择一个或多个元素。常见的选择器有: 标签选择器:选择所有指定标签名的…

    css 2023年6月11日
    00
  • CSS常见的让元素水平居中显示的方法

    当我们需要将一个元素水平居中时,可以通过以下CSS方法来实现: 1. 使用text-align属性将文本居中 如果所要居中的元素为内联元素(例如,a、span、img等),可以使用text-align属性将其文本居中。将text-align属性赋值为center即可实现。 .parent { text-align: center; } .child { di…

    css 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部