百度地图_更改标注颜色

一、前期准备

1、  申请密匙

去百度地图控制台申请密匙。

地址:http://lbsyun.baidu.com/

2、  在index.html引入

<script type="text/javascript" src="https://api.map.baidu.com/api?v=2.0&ak=您的密钥也就是ak值"></script>

注:去掉地图左下角的logo

     .BMap_cpyCtrl {

        display: none;

       }

       .anchorBL {

        display: none;

       }

3、webpack.base.conf.js里面配置

在module.exports中与entry同级添加

  externals: {
    "BMap": "BMap"
  },

4、  需要使用百度地图的组件中导入(地图中用到BMap 的需要导入)

import BMap from ‘BMap‘

5、   创建一个地图容器,需要有宽高

   <div id="mapBox"></div>

6、   然后在vue生命周期的mounted中调用

  mounted() {
    this.initMap();
},

InitMap方法如下

    // 初始化地图

    initMap() {

      this.map = new BMap.Map("mapBox"); // 创建Map实例

      this.map.centerAndZoom(new BMap.Point(108.95, 37.38), 5); // 初始化地图,设置中心点坐标和地图级别

      this.map.setCurrentCity("北京"); // 设置地图显示的城市 此项是必须设置的

      this.map.enableScrollWheelZoom(true); //开启鼠标滚轮缩放

    },

这样最初的地图就出来了

二:添加地图覆盖物(label,marker, initInfoWindow)

首先看后台给的数据

[{"lng":119.417854,"lat":39.921988,"total":10,"type":"red","content":"XX"},{"lng":116.417854,"lat":39.921988,"total":10,"type":"red","content":" XXXX"}]"

1、  初始化marker

// 初始化标注

 // 初始化标注
    initMarker(data) {
     let myIcon = null;
      let pt = new BMap.Point(data.lng, data.lat);
      if (data.type == "red") {
        myIcon = new BMap.Icon(
          require("../assets/img/red_marker.png"),
          new BMap.Size(47, 52)
       );
      } else {
        myIcon = new BMap.Icon(
          require("../assets/img/bule_marker.png"),
          new BMap.Size(47, 52)
        );
      }
      return new BMap.Marker(pt, { icon: myIcon });
      //  return new BMap.Marker(pt);
    },

2、  初始化label

   // 初始化文字标签
    initLabel(data) {
      let opts = {
        position: new BMap.Point(data.lng, data.lat), // 指定文本标注所在的地理位置
        offset: new BMap.Size(-8, -25) //设置文本偏移量
      };
      if (data.total < 10) {
        opts.offset = new BMap.Size(-4, -18);
      } else if (data.total >= 10 && data.total < 100) {
        opts.offset = new BMap.Size(-8, -18);
      } else if (data.total >= 100 && data.total < 1000) {
        opts.offset = new BMap.Size(-12, -18);
      }
     let label = new BMap.Label(data.total, opts); // 创建文本标注对象
      label.setStyle({
        color: "#fff",
        border: "none",
       fontSize: "12px",
        height: "20px",
        lineHeight: "20px",
        fontFamily: "微软雅黑",
        background: "rgba(0,0,0,0)"
      });
      return label;
  },

3、  初始化initInfoWindow

initInfoWindow(data) {
      let str =data. content; //自定义窗口内容
      return new BMap.InfoWindow(str, {
        offset: {
          //偏移量
          width: 5,
          height: -20
        },
       width: 300,
        enableCloseOnClick: true
      });
   },

注:如下图在marker上加数字有多种方法

(1)、通过自定义覆盖物做成数字然后添加上去。研究了下,比较麻烦具体看

https://blog.csdn.net/phper111/article/details/77897940

(2)、通过label设置偏移与样式

接下来是根据后台给的数据来整理自己需要的数据

4、  添加标注事件

 setInfoWindow() {
      // 清除地图上标注,文字标签
      this.overlays.forEach(value => {
        this.map.removeOverlay(value);
      });
      // 往地图添加标注点,与信息窗口
      this.markerArr.forEach(opt => {
        let infoWindow = this.initInfoWindow(opt.data); // 创建信息窗口对象
        let marker = this.initMarker(opt.data); //创建标注点
        let label = this.initLabel(opt.data); //创建文字标签
        this.map.addOverlay(marker);
        this.map.addOverlay(label);
        this.overlays.push(marker, label);
        // 监听打开信息窗口
        let this_ = this;
        marker.addEventListener("click", function() {
          this_.map.openInfoWindow(infoWindow, opt.point); //开启信息窗口
          this_.map.removeOverlay(marker);
          opt.data.type = "blue";
          this_.setInfoWindow();
          $(".BMap_pop>img").hide();
        });
        // 监听关闭信息窗口
        infoWindow.addEventListener("close", function() {
          opt.data.type = "red";
          this_.setInfoWindow();
        });
      });
    }

最后就是这样的效果啦,当点击marker变蓝色

原文地址:https://www.cnblogs.com/yjmBlogs/p/10212509.html

时间: 2024-08-07 12:55:43

百度地图_更改标注颜色的相关文章

安卓开发_慕课网_百度地图_添加覆盖物

学习内容来自“慕课网” 本片学习内容接自前四篇基础 安卓开发_慕课网_百度地图 安卓开发_慕课网_百度地图_实现定位 安卓开发_慕课网_百度地图_实现方向传感器 安卓开发_慕课网_百度地图_实现模式转换 请先学习前4篇再学习本篇,因为本篇在前四篇的基础上进行代码的编写 一.新建一个类用来存放数据(距离,点赞数,介绍图等信息) 1 package com.example.map; 2 3 import java.io.Serializable; 4 import java.util.ArrayLi

安卓开发_慕课网_百度地图_实现模式转换

学习内容来自“慕课网” 模式转换,即地图的普通模式,罗盘模式,跟随模式之间的转换 学习内容接自前三篇 安卓开发_慕课网_百度地图 安卓开发_慕课网_百度地图_实现定位 安卓开发_慕课网_百度地图_实现方向传感器 一.模式转换通过菜单按钮来控制 所以添加对应的菜单项(红色字体部分) 1 <menu xmlns:android="http://schemas.android.com/apk/res/android" > 2 3 <item 4 android:id=&qu

安卓开发_慕课网_百度地图_实现方向传感器

学习内容来自“慕课网” 这里学习百度地图方向传感器功能 就是当转动手机的时候,地图上显示个人所在位置的图标的箭头变动 学习接自前两篇 安卓开发_慕课网_百度地图 安卓开发_慕课网_百度地图_实现定位 思路: 传感器随着定位的开始而开启,随着定位的结束而结束 传感器获得位置的移动而更新方向 代码在前两篇的基础上修改 一.讲原本坐标的图标改成箭头图标 二.引入方向传感器 首先增添MainActivity.java中的自定义图标和方向传感器代码 看红色字体的部分 1 package com.examp

百度地图循环添加标注,并循环为标注添加信息窗口问题解决

原文:百度地图循环添加标注,并循环为标注添加信息窗口问题解决 最近几年在搞地图方面的开发,主要是循环为坐标添加标注并为标注添加弹出信息窗口,起初我的代码如下: var map = new BMap.Map("Mapcontainer"); var JsonObj = eval(JsonStr); if (JsonObj != null) { for (var i = 0; i < JsonObj.length; i++) { var point = new BMap.Point(

百度地图API 添加自定义标注 多点标注

原文:百度地图API 添加自定义标注 多点标注 分四个文件 location.php map.css 图片 数据库 数据库配置自己改下 ------------------------------------------------------------  华丽的分割线   ----------------------------------------------------- location.php 主文件 <link rel="stylesheet" type=&quo

百度地图生成器添加标注后图标不显示的解决方法

作为传统企业网站的联系我们页面里,一般都会加个地图,如果只有文字描述,会显得很LOW. 百度地图生成器(http://api.map.baidu.com/lbsapi/creatmap/)就很好的满足了这一部分用户的诉求,快速简单的给自己网页添加一个加标注的地图,但是美中不足的,现在这个百度地图生成器添加标注后,标注图标不显示,如下图: 解决方法也很简单,只要找到生成的代码中的icon地址: http://app.baidu.com/map/images/us_mk_icon.png 替换成这个

百度地图中的标注

使用多个定义好的城市标注,需要用for来循环一下,不然出现的是一个,或者不显示任何的标注 <script type="text/javascript"> // 百度地图API功能 var map = new BMap.Map("container"); map.centerAndZoom(new BMap.Point(106.234, 38.54), 5); map.addControl(new BMap.NavigationControl()); //

百度地图API 自定义标注图标

通过Icon类可实现自定义标注的图标,下面示例通过参数MarkerOptions的icon属性进行设置, 也可以使用marker.setIcon()方法. <script type="text/javascript"> // 百度地图API功能 var map = new BMap.Map("allmap"); // 创建Map实例 map.centerAndZoom(new BMap.Point(116.323066,39.989956), 16);

百度地图批量添加标注+点击显示对应窗口信息

<script type="text/javascript"> // 百度地图API功能 var map = new BMap.Map("allmap"); // 创建Map实例 var point = new BMap.Point(121.338403, 31.24203); map.centerAndZoom(point, 7);//创建中心点 map.enableScrollWheelZoom(); //启用滚轮放大缩小,默认禁用 map.enab