高德地图使用鼠标工具(mouseTool)画覆盖物折线(mouseTool.polyline),光标使用十字架(crosshair)类型,不断出现closehand小手图标干扰

2023-11-18

今天在使用高德地图的时候,使用鼠标工具进行地图范围折线标注,但是发现鼠标在画第二个点,鼠标落下的时候会自动请求这个URL http://webapi.amap.com/theme/v1.3/closedhand.cur,如图:请求返回的是鼠标悬浮的小手(.cur光标文件),如下图:

然后介绍一下这个小手什么时候它会显示:经过我的测试,发现它在我的鼠标在移到我绘制的线和正在绘制的线上面的时候显示为小手,如下图:

这个也许是高德地图对热点移动到覆盖物上时自动请求这个图标回来,正常情况下也没什么影响,但是现在我在绘线过程中它会一直与十字架光标交替闪烁出现,这是客户不能接受的,我也不能接受,希望的是在绘画过程中一直保持十字架光标用以区分绘线和退出的状态。

因为它的热点就是光标的热点,而这就直接导致我在后续的绘线过程中,鼠标的热点一直在我的线上,这样就一直闪烁的显示小手和十字架光标,因为在移动的时候(快速移动==>),热点下面还没有线的显示,那段时间是不会显示小手,但是只要慢了,光标下面就会有线,导致小手图标与十字架图标一直不停换着显示,这种情况会在strokeWeight(线宽)的值越大的时候越严重。

我阅读了高德官方的开发者文档,但是并没有找到能解决的办法(如果有朋友有官方的解决办法请留言告诉我,谢谢了)。

最后我的解决办法是给地图的容器div设置鼠标样式,如下图:

现在无论我怎么画线,光标都能一直保持十字架crosshair光标,当然我这里只是大概讲了一下思路,后续功能的完善就不细讲了,你可以把这个样式用两个class来定义,通过点击事件控制某个参数,在行内使用三元表达式来控制鼠标的样式,以此实现开始绘线和停止绘线的状态。

下面是我自己的例子:

<div id="containes" style="width:100%; height:100%" :class="[cursor ? 'cursorCrosshair' : 'cursorPointer']" />

这下面是测试用的简单例子:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <script type="text/javascript" src="http://webapi.amap.com/maps?v=1.4.4&key=78bfb693a2a4c44c028a8be7c2e0f1b7&plugin=AMap.PolyEdito"></script>
  <script src="https://webapi.amap.com/maps?v=1.4.15&key=78bfb693a2a4c44c028a8be7c2e0f1b7&plugin=AMap.MouseTool"></script>
  <script type="text/javascript" src="http://webapi.amap.com/maps?v=1.4.4&key=78bfb693a2a4c44c028a8be7c2e0f1b7&plugin=AMap.PolyEdito,AMap.MouseTool,AMap.Autocomplete,AMap.PlaceSearch"></script>
  <script type="text/javascript" src="https://cache.amap.com/lbs/static/addToolbar.js"></script>
  <script type="text/javascript" src="https://webapi.amap.com/demos/js/liteToolbar.js"></script>
  <title>Title</title>
</head>
<body>
<div id="container" style="width:100%; height: 100%;"></div>
<div style="position: absolute;top: 30px;left: 500px">
  <input id="tipinput" />
  <button id="polyline">开始绘图</button><button id="clear">取消绘图</button>
</div>
<style type="text/css">
  html,body{
    width: 100%;
    height: 100%;
    margin: 0px;
  }
</style>
<script>
  //新建地图
    var map = new AMap.Map('container',{
        center: [106.535499, 29.546464],
        resizeEnable: true,
        zoom: 18
    });
    var overlays = [];

    //新建鼠标工具
    var mouseTool = new AMap.MouseTool(map);

    //搜索位置
    var autoOptions = {
        input: 'tipinput',
        city: '重庆'
    }
    var auto = new AMap.Autocomplete(autoOptions)
    var placeSearch = new AMap.PlaceSearch({
        map: map,
        zoom: 12
    }) 
    // 构造地点查询类
    AMap.event.addListener(auto, 'select', select)// 注册监听,当选中某条记录时会触发
    function select(e) {
        placeSearch.setCity(e.poi.adcode)
        placeSearch.search(e.poi.name) // 关键字查询查询
    }
    //鼠标连线监听时间
    mouseTool.on('draw', (type, obj) => {
        var map_m = type.obj.getPath()
        console.log('AAA',map_m)
    })
    //开始绘图事件
    document.getElementById('polyline').onclick = function(){
        // map.setDefaultCursor("crosshair")
        mouseTool.polyline({
            strokeColor:'red',
            strokeWeight: 6,
            //同Polyline的Option设置
        });

    }
    //清楚绘图事件
    document.getElementById('clear').onclick = function(){
        // map.setDefaultCursor("pointer")
        map.remove(overlays)
        overlays = [];
        mouseTool.close(true)
    }
</script>
<style>
  #container {
    cursor : crosshair !important;
  }
</style>
</body>
</html>

若有小伙伴有更好的高德官方解决方案请留言给我,谢谢 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

高德地图使用鼠标工具(mouseTool)画覆盖物折线(mouseTool.polyline),光标使用十字架(crosshair)类型,不断出现closehand小手图标干扰 的相关文章

  • 全国行政区划下载(高德)

    高德地图API提供的行政区划查询 可以获取到行政区域的区号 城市编码 中心点 边界 下辖区域的详细信息 基于该工具进行扩展 对边界数据做转换处理 保存为GeoJson格式文件 方便使用 并且还可以选择转为WGS84坐标 下载地址 CLICK
  • 8-使用QT5的鼠标事件和滚轮事件

    使用QT5的鼠标事件和滚轮事件 完成鼠标左键拖动窗口 双击全屏 滚轮放大缩小窗口大小 这里使用的是QMouseEvent类里面的鼠标事件 通常进行重定义部件的鼠标事件处理函数来实现自定义的内容操作 同样 鼠标滚轮操作是利用QWheelEve
  • VUE2 使用高德地图(入门超详细)

    创建项目就不用说了吧 高德地图的api https lbs amap com 进去后按照提示注册登陆 点击左侧应用管理 我的应用 点击右上角创建新应用 给新创建的应用添加key 红框圈起来的是必填项 提交后就有key和密钥两个重要的东西 项
  • vue 高德地图使用热力图

    代码 在public index html中加入
  • vue使用elment的弹窗里面调用AMap.Autocomplete提示失效

    1 使用AMap Autocomplete提示失效 不是加载失效 是被弹窗的层级挡住了 这里面涉及到用了elment ui 的模态窗组件 我在自定义组件内通过深度选择器也没效果 需要全局引入 amap sug result z index
  • Vue创建高德地图,监听地图层级的变化进行操作

    createmap let that this 创建地图 MapLoader then AMap gt that map new AMap Map containerRight zoom that defaultZoom center th
  • 高德地图组件在Android的应用以及Android与JavaScript的交互(一)

    最近在慕课网学习了关于高德地图组件的课程 其实就是一个广告 内容和官网的API完全一样 发现这个JavaScript API比Android API简单方便多了 于是就打算放在Android APP上来实现 花了一点小功夫 但是最终还是实现
  • web H5 调用高德地图 通过ip定位获取当前城市

    web H5 调用高德地图 通过ip定位获取当前城市 一 使用步骤注册高德账号 创建应该获取key 登录之后 点击 应用 头部导航栏 注册地址拿走 https lbs amap com dev id choose 注意这里有服务类型 提交完
  • 高德地图的缩放和位移监听

    最近项目采用高德地图 高德地图的文档 demo都很详细 想实现的功能基本上都有 在项目里有一个功能 是类似根据地图的中心经纬度实现数据请求 为了不无限的请求 所以要分别监听 地图的缩放 地图位移 这里就有一个方法 gadMap setOnC
  • vue项目 高德地图实现区域多个标点并通过半径距离以此点绘制多个圆(circle),动态显示隐藏圆;实现根据经纬度获取中文地址,根据地址获取经纬度;地图控件显示隐藏

    最终效果 一 需求 最近公司有这样一个需求 指定一个区域根据一个距离测算需要开放多少个门店才能覆盖整个指定区域 暂不考虑人口密集 山区等因素 大概估算 因此稍微了解了一下 高德地图的API 记录一下常用高德地图进行定位 标点 自定义标点 测
  • 使用高德地图(点标记)完成vue2项目

    目录 前言 官网中的代码 项目中的代码 效果图 代码 配置 前言 由于项目 中有要使用高德地图的需求 我就 傲娇的说 我会使用百度地图 可以改为百度地图不 最终的结果就是要用高德地图 后端小哥哥还特别好的安慰我说 高德地图的用法跟百度地图的
  • 安卓高德地图API根据城市名获取对应的经纬度和地理编码

    private void getLatlon String cityName GeocodeSearch geocodeSearch new GeocodeSearch context geocodeSearch setOnGeocodeS
  • selenium对浏览器操作、鼠标操作等总结

    1 控制浏览器 Selenium 主要提供的是操作页面上各种元素的方法 但它也提供了操作浏览器本身的方法 比如浏览器的大小以及浏览器后退 前进按钮等 1 1 控制浏览器窗口大小 在不同的浏览器大小下访问测试站点 对测试页面截图并保存 然后观
  • 小白的高德地图初体验(二)——聚合点

    小白的高德地图初体验 二 聚合点 说到高德地图 肯定要推荐官方文档 传送门 走你 小白的高德地图初体验 一 打点 小白的高德地图初体验 二 点聚合 小白的高德地图初体验 三 轨迹 小白的高德地图初体验 四 矢量图形 小白的高德地图初体验 五
  • 高德地图api之编码(Geocoder)

    高德地图目前仅支持中国范围内的的地理编码和反地理编码 当我们在做搜索功能的时候 由于用户不可以记住地点的经纬度 所以只可能输入地名 所以地理编码就显得额外重要 这里我们查看一下AMap api中的地理编码 地理编码 地理编码 顾名思义就是根
  • webview中h5高德定位没有权限的问题Geolocation permission Denied

    网上都是说添加这两个东西 settings setDatabaseEnabled true settings setDomStorageEnabled true mWebView setWebChromeClient new WebChro
  • VUE中使用高德地图(原生UI,信息窗体内部事件监听)

    VUE中使用高德地图 原生UI 先吐槽一下 本人的环境是基于vue3 0的项目 上一位参与项目的同事使用的事vue amap 因工作需要 另外一位同事去了别的项目 所以这个万恶的项目由本人自己维护 就是再本周新增了需求 根据不用大区的用户进
  • 高德地图逆地理编码Geocoder的getlocation获取不到位置信息

    问题 原生定位接口定位失败 则status返回error事件或回调error信息 获取不到位置信息 产生原因 逆编码方法使用不了原因是使用的高德地图的应用方向web服务 而Geocoder属于web端 var geocoder new AM
  • 高德地图之地理编码

    首先申明是地理编码呢 地理编码 又称为地址匹配 是从已知的地址描述到对应的经纬度坐标的转换过程 该功能适用于根据用户输入的地址确认用户具体位置的场景 常用于配送人员根据用户输入的具体地址找地点 既地理编码 地址转坐标 下面一步步来看怎么实现
  • 高德地图——步行导航

    高德地图 步行导航 插件 plugin AMap Walking 步行导航和驾驶导航几乎是一样的 唯一的不同便是导入的插件不同 步行导航的全程都是蓝色的 而驾驶导航线会有红色拥堵 绿色通畅的颜色

随机推荐