基于高德地图创建地图与其内的操作配置项描述展示

  • 本文将简单描述创建基础地图与如何使用其配置项等等

1 创建并使用

1.1 下载所需要的包
npm i @amap/amap-jsapi-loader
1.2 创建与使用展示
<template>
  <!-- <div>
    <div id="container">
      <div id="panel"></div>
    </div>
  </div> -->
  <div class="map-content">
    <div id="container" class="map"></div>
    <div id="panel" @click="routePlanning">测试按钮</div>
  </div>
  <!-- <div class="info">
    <div class="input-item">
      <div class="input-item-prepend">
        <span class="input-item-text" style="width:8rem;">请输入关键字</span>
      </div>
      <input id='tipinput' type="text">
    </div> -->
</template>

<script>
import AMapLoader from "@amap/amap-jsapi-loader";
window._AMapSecurityConfig = {
  // 设置安全密钥
  securityJsCode: "",
};
//下载自官网示例数据  http://a.amap.com/Loca/static/mock/districts.js
const districts = [];
export default {
  data() {
    return {
      map: "",
      path1: [],
      path2: [],
    };
  },
  mounted() {
    this.initMap();
  },
  methods: {
    initMap() {
      AMapLoader.load({
        key: "", // 申请好的Web端开发者Key,首次调用 load 时必填
        version: "2.0", // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
        plugins: [
          "AMap.Scale", // 比例尺
          "AMap.Transfer",
          "AMap.StationSearch",
          "AMap.ToolBar", // 添加右下角的放大缩小
          "AMap.Driving",
          "AMap.PlaceSearch",
          "AMap.Geolocation",
          "AMap.HawkEye", // 鹰眼,显示缩略图
          "AMap.MapType", // 添加右上角的标准图和卫星图  和路况
          "AMap.Weather",
          "AMap.controlBar", // 方向盘
        ], // 需要使用的的插件列表,如比例尺'AMap.Scale'等
      })
        .then((AMap) => {
          this.map = new AMap.Map("container", {
            viewMode: "2D", //  是否为3D地图模式
            zoom: 13, // 初始化地图级别
            center: [113.65553, 34.748764], //中心点坐标  郑州
            resizeEnable: true,
            isHotspot: true, // 开启地图的热点功能 (站点详情)
          });
          this.siteDetails();
          // 地图加载完成事件
          this.map.on("complete", function () {
            let a = 'abcdefg,'
            a = a.replace(/[abc,]/gi, '')
            console.log(a);
            console.log("地图加载完成!");
          });

          // showIndoorMap: false, // 是否在有矢量底图的时候自动展示室内地图,PC默认true,移动端默认false
          // dragEnable: false, // 地图是否可通过鼠标拖拽平移,默认为true
          // keyboardEnable: false, //地图是否可通过键盘控制,默认为true
          // doubleClickZoom: false, // 地图是否可通过双击鼠标放大地图,默认为true
          // zoomEnable: false, //地图是否可缩放,默认值为true
          // rotateEnable: false, // 地图是否可旋转,3D视图默认为true,2D视图默认false

          // 交互控制
          // this.map.setStatus({
          //   dragEnable: true,
          //   keyboardEnable: true,
          //   doubleClickZoom: true,
          //   zoomEnable: true,
          //   rotateEnable: true,
          // });

          //使用CSS默认样式定义地图上的鼠标样式
          this.map.setDefaultCursor("pointer");

          // 点击获取经纬度
          this.map.on("click", function (e) {
            console.log("经度", e.lnglat.getLng());
            console.log("纬度", e.lnglat.getLat());
          });
          this.map.addControl(new AMap.ToolBar());
          this.map.addControl(new AMap.MapType());
          this.map.addControl(new AMap.Scale());
          // this.map.addControl(new AMap.Transfer())
          this.map.addControl(new AMap.Geolocation());
          this.map.addControl(new AMap.HawkEye());
          // this.map.addControl(new AMap.controlBar()) // 方向盘
          // this.map.addControl(new AMap.StationSearch())
          // this.getRoute() // 获取线路规划
          var geolocation = new AMap.Geolocation({
            // 是否使用高精度定位,默认:true
            enableHighAccuracy: true,
            // 设置定位超时时间,默认:无穷大
            timeout: 10000,
            // 定位按钮的停靠位置的偏移量,默认:Pixel(10, 20)
            buttonOffset: new AMap.Pixel(10, 20),
            //  定位成功后调整地图视野范围使定位位置及精度范围视野内可见,默认:false
            zoomToAccuracy: true,
            //  定位按钮的排放位置,  RB表示右下
            buttonPosition: "RB",
          });
          geolocation.getCurrentPosition(function (status, result) {
            console.log(status, result);
            if (status == "complete") {
              onComplete(result);
            } else {
              onError(result);
            }
          });

          function onComplete(data) {
            // data是具体的定位信息
          }

          function onError(data) {
            // 定位出错
          }
        })
        .catch((e) => {
          // console.log(e)
        });
    },
    // ----------------------------------------------------------------
    //地图移动与缩放事件
    logMapinfo() {
      // 移动事件
      this.map.on("moveend", () => {
        console.log("当前地图级别", this.map.getZoom());
        // lng, lat 代表经纬度
        console.log("当前地图中心位置", this.map.getCenter());
      });
      // 缩放事件
      this.map.on("zoomend", () => {
        console.log("当前地图级别", this.map.getZoom());
        console.log("当前地图中心位置", this.map.getCenter());
      });
    },
    // 设置经纬度
    steupMap() {
      this.map.setCenter([lng, lat]); //设置地图中心点
      this.map.setZoom(zoom); //设置地图层级
    },
    // 获取地图当前行政区
    getMapCity() {
      this.map.getCity((e) => {
        console.log("当前行政区", e);
      });
    },
    // 设置地图当前行政区
    setCityMap() {
      //可以是cityname、adcode、citycode
      // 现在默认郑州市  输入对应行政区  可模糊输入
      this.map.setCity("北京市");
    },
    // 设置/获取地图显示范围
    rangeMap() {
      console.log("获取", this.map.getBounds());
      // 设置
      var mybounds = new AMap.Bounds(
        [116.319665, 39.855919],
        [116.468324, 39.9756]
      );
      this.map.setBounds(mybounds);
    },
    //限制/取消地图显示范围
    lockMapBounds() {
      //获取地图显示范围
      var bounds = this.map.getBounds();
      //限制地图显示范围
      this.map.setLimitBounds(bounds);
      //取消地图显示限制
      this.map.clearLimitBounds();
    },
    // 地图的平移
    translation() {
      // 平移像素值
      // this.map.panBy(50, 100);
      // 移至指定位置
      //  map.panTo([116.405467, 39.907761]);
    },
    // 地图的热点功能 (站点详情)
    siteDetails() {
      // let placeSearch = new AMap.PlaceSearch(); //构造地点查询类
      // let infoWindow = new AMap.InfoWindow({}); //创建信息窗体
      // let maps = this.map;
      // //鼠标经过
      // this.map.on("hotspotover", function (result) {
      //   placeSearch.getDetails(result.id, function (status, result) {
      //     if (status === "complete" && result.info === "OK") {
      //       let poiArr = result.poiList.pois;
      //       let location = poiArr[0].location;
      //       //信息窗体内容
      //       let dialog = [];
      //       dialog.push(
      //         '<div class="info-title">' +
      //           poiArr[0].name +
      //           '</div><div class="info-content">' +
      //           "地址:" +
      //           poiArr[0].address
      //       );
      //       dialog.push("电话:" + poiArr[0].tel);
      //       dialog.push("类型:" + poiArr[0].type);
      //       dialog.push("<div>");
      //       dialog.join("<br>");
      //       // 向信息框体添加内容
      //       infoWindow.setContent(dialog);
      //       // 打开信息框体
      //       infoWindow.open(maps, location);
      //     }
      //   });
      // });
    },
    // 构造点标记/矢量圆形
    signMap() {
      // 构造点标记
      let marker = new AMap.Marker({
        // 标记的样式
        icon: "https://webapi.amap.com/theme/v1.3/markers/n/mark_b.png",
        // 标记点的经纬度
        position: [113.65553, 34.748764],
        anchor: "bottom-center",
      });
      // 构造矢量圆形
      var circle = new AMap.Circle({
        center: new AMap.LngLat("113.65553", "34.748764"), // 圆心位置
        radius: 1000, //半径
        strokeColor: "#F33", //线颜色
        strokeOpacity: 1, //线透明度
        strokeWeight: 3, //线粗细度
        fillColor: "#ee2200", //填充颜色
        fillOpacity: 0.35, //填充透明度
      });
      // 添加标记
      this.map.add(marker);
      this.map.add(circle);
      // 移除标记
      // this.map.remove(marker);
      // this.map.remove(circle);
      // 自动适配到合适视野范围
      // 无参数,默认包括所有覆盖物的情况
      this.map.setFitView();
    },
    // 路线规划
    routePlanning() {
      //构造路线导航类
      var driving = new AMap.Driving({
        map: this.map,
        panel: "panel",
      });
      // 根据起终点名称规划驾车导航路线
      driving.search(
        [
          { keyword: "郑州动物园(公交站)", city: "郑州" },
          { keyword: "郑州人民公园(地铁站)", city: "郑州" },
        ],
        function (status, result) {
          // result 即是对应的驾车导航信息,相关数据结构文档请参考  https://lbs.amap.com/api/javascript-api/reference/route-search#m_DrivingResult
          if (status === "complete") {
            console.log("绘制驾车路线完成");
          } else {
            console.log("获取驾车数据失败:" + result);
          }
        }
      );
    },
  },
};
</script>

<style  scoped lang="less">
.map {
  height: 100vh;
}
.map-content {
  position: relative;
}
#panel {
  position: absolute;
  top: 0;
  right: 0;
  &:hover {
    cursor: pointer;
  }
}
.info-title {
  font-weight: bolder;
  color: #000;
  font-size: 14px;
  width: 250px;
  height: 250px;
  line-height: 26px;
  padding: 0 0 0 6px;
  background-color: pink;
}
.info-content {
  width: 250px;
  padding: 4px;
  color: #666666;
  line-height: 23px;
  font: 12px Helvetica, "Hiragino Sans GB", "Microsoft Yahei", "微软雅黑", Arial;
}
</style>
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,179评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,229评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,032评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,533评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,531评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,539评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,916评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,813评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,568评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,654评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,354评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,937评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,918评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,152评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,852评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,378评论 2 342

推荐阅读更多精彩内容