百度地图嵌入弹出层,无法准确正确显示marker标记到中心位置的问题
来源:互联网 发布:淘宝怎么发布话题 编辑:程序博客网 时间:2024/06/02 12:48
最近同事遇到了一个问题,找我帮忙,先说下情况:
1,页面中有一个弹出框,也就是弹出层,弹出层里面的html是实用table,
其中一个tr中使用div作为百度地图的容器
如图:
2,打开弹出层后,根据一组指定的经纬度在地图上创建marker标记,并且在可视窗口中心显示该marker
问题来了,无论是实用了panTo还是centerAndZoom,还panby
都无法让marker自动定位显示在可视窗口的中心,很多时候marker标记都在左上角,就是无法成为中心;
,同一段脚本,打开弹出层之后,点击一个定位按钮就可以正确定位,
找了度娘,又问了谷歌,也有一些人遇到了类似的问题,有人说是div不能放在table里面,
试了下发现没用,也有人说是跟地图容器隐藏和显示的问题,
这一点其实说的对的,确实跟容器有关,但是解决办法确不一定是去写个显示和隐藏容器的脚本
因为实用easyui的时候,打开弹出层什么的几乎没地方可写触发显示隐藏容器的脚本
只能硬着头皮自己想解决办法,一通熬夜,一通尝试,发现之所以没有显示在可视区域内,
并不是因为panto和centerAndZoom没有起作用,而是起作用了,而是创建的地图有问题,
试想,你有一个淡出层,左边是一些输入框,右边是地图窗口,创建地图之后,我们理所应当的认为右边
的窗口就是地图的全部了,事实却不是这样,其实是因为弹出层没有打开的情况下,创建的地图,
会按照弹出层的大小去创建地图,而不是按照弹出层中地图容器的大小去创建地图
而这就是为什么无法自动将创建的marker显示在地图窗口中心的原因
总结起来 就是 创建的地图的时机不对,在弹出层没有打开的时候去创建地图,创建的地图并不是我们想要的地方,
就会产生无法正确自动将marker标记展示在可视窗口中心的原因,因为体检创建的地图的中心不可能在可视地图窗口的中心
解决办法就更简单了
在弹出层打开以后重新创建地图对象,或者不在document.ready中创建,只在打开弹出层才创建地图
注意就是弹出层可能会多次打开,地图只创建一次就够了,自己加个flag去控制下
这类问题解决起来,几乎没什么代码可写,主要就是找到原因,就可以瞬间解决问题
- 百度地图嵌入弹出层,无法准确正确显示marker标记到中心位置的问题
- 百度地图 显示准确的位置
- 百度地图动态添加marker的图片显示问题
- 百度地图Marker隐藏/显示
- android 百度地图 marker固定在屏幕中心,动态获取可移动地图的中心坐标
- 百度地图 使覆盖物显示在地图中心位置
- 百度地图 遍历marker并增加窗口 只显示最后一个窗口信息的问题
- 百度地图开发--解决地图无法显示的问题
- Android 百度地图marker中图片不显示的解决方案
- Android百度地图,后台返回的坐标,设置地图中心位置,缩放比例自适应,弹出窗体等
- 百度地图标注点不在中心位置问题
- 百度地图初始化位置以及位置标记
- 百度地图api之Marker类--标记点固定
- 百度地图 循环加载marker并添加多个信息窗口,解决只显示最后一个窗口信息的问题
- 高德地图自定义marker不显示的问题
- 关于百度地图显示自己的位置
- 使用百度地图 显示自己的位置
- Android百度地图显示附近的位置
- 位图索引bitmap(二):现代位图索引技术
- Android 4.4 MediaRecorder系统结构
- 欧几里得算法初步 & NOI Openjudge 4975 两只鼹鼠
- qt显示灰度图像程序
- Jboss修改jsp需要重启才生效
- 百度地图嵌入弹出层,无法准确正确显示marker标记到中心位置的问题
- IOS的基本控件的使用-步进器&分栏控制器
- java FTPClient 上传文件 0kb 问题
- Android MediaRecorder架构详解
- keepalived + nginx实现高可用双机热备+负载均衡
- 修改WordPress中附件上传大小限制
- 自建gitlab环境支持lfs功能
- EventBus3.0使用详解
- ESXi 5.0 设置虚拟机随系统启动