百度地图离线开发demo-弹窗相关,边界问题

博客内容讲述了在百度地图离线开发中遇到的弹窗边界避让问题。作者提到原生API的infowindow效果不佳,故选择自定义一个不依赖地图API的弹窗组件。通过获取经纬度并转换为浏览器定位像素单位,进行边界计算,以实现弹窗的正确绝对定位,从而解决地图偏移问题。
摘要由CSDN通过智能技术生成

demo内容有:(海量数据地图绘制,迁徙图,弹窗边界避让的问题,热力图,初始化离线地图),有需要可以评论问我。。。。demo列的都是我有写过,并且实现的。有需求也可以说。我有时间写demo。瓦片没有找到免费的!我也没找到!可以自行找免费的瓦片!

通常结合地图开发,地图两侧(绝对定位漂移在地图上方),上下,基本都会有对应的边界,展示一些统计信息,或者头部div。原生api有对应的弹窗infowindow,但是效果不好用,没有躲避边界,或者就是躲避边界,会让地图偏移,与需求不大相符,因此,我的做法是,自定义一个不使用地图的弹窗api,自定义组件

通过地图上的点击,获取对应的经纬度,再将经纬度转换为浏览器的定位px单位,在进行边界计算,从而设置弹窗的绝对定位,来解决边界问题

<template>
  <div class="bd-map-component">
    <div
      id="baiduMap"
    />
    <map-info-window
      :style-obj="styleObj"
      :info-window-visible.sync="infoWindowVisible"
    >
      <slot />
    </map-info-window>
  </div>
</template>

其中,mapinfowindow为弹窗插槽 

// 地图div宽高
const boxSize = this.map.getSize()
// 测试下 与pointToPixel转换是相同的 像素坐标
let pixel = null
if (typeof (point.lng) === 'undefined') {
  pixel = this.map.pointToPixel({ lng: 118.138979, lat: 24.497246 })
} else {
  pixel = this.map.pointToPixel({ lng: point.lng, lat: point.lat })
}
this.styleObj = {
  width: 500,
  height: 300,
  top: pixel.y,
  left: pixel.x,
  boxWidth: boxSize.width,
  boxHeight: boxSize.height
}
this.infoWindowVisible = true

因为布局关系,本例没有计算边界,后续ol例子会计算边界

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本人基于2017年12月最新API制作。 说明: 1)离线地图不是万能的, 有些依赖在线的功能是无法使用的, 请自行扩展 2)请查看 离线地图示例demo.html 里面的示例,或者查看地图API在线示例: http://developer.baidu.com/map/jsdemo.htm 3) 地图API请查看百度官方说明: http://developer.baidu.com/map/reference/index.php 4)如有更新,请查看网站: http://www.xiaoguo123.com/p/baidumap_offline_v21 5)此API用户大家交流学习,本人没有能力提供太多的技术帮助 6)由于某些用途导致的商业纠纷,和本人无关 新增: 1)支持显示卫星混合地图,瓦片图放到 tiles_hybrid 目录下 2)支持支定义混合图,瓦片图放到 tiles_self 目录下 3)增加根据城市名称设置地图中心, 请自行扩展map_city.js 4)增加鼠标测距示例 5)增加鼠标绘制线面示例 增加新的瓦片图: 1)使用地图下载工具(如太乐地图下载)下载你要的地区和级别 2)务必导出瓦片图(百度格式),可以选择导出jpg或png图形 3)按需要修改map_load.js,指定瓦片图的路径,或者按默认的来 4)目录说请看图片: 目录说明.jpg 基本的使用方法如下: 1)加载离线地图必须的文件: [removed][removed] <link rel="stylesheet" type="text/css" href="offlinemap/css/map.css"/> 2)增加一个容器用来显示地图 3)写JS脚本 [removed] var map = new BMap.Map("map_demo"); // 创建Map实例 map.centerAndZoom(new BMap.Point(116.404, 39.915), 7); // 初始化地图,设置中心点坐标和地图级别 map.setCurrentCity("武汉"); // 设置地图中心显示的城市 new! map.enableScrollWheelZoom(true); //开启鼠标滚轮缩放 map.addControl(new BMap.NavigationControl()); //缩放按钮 map.addControl(new BMap.MapTypeControl( {mapTypes: [BMAP_NORMAL_MAP,BMAP_HYBRID_MAP]} )); //添加地图类型控件 离线只支持普通、卫星地图; 三维不支持 [removed]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值