百度地图遇到的问题

最近在使用百度地图画配送范围,遇到一些问题,简单整理一下我记下来的内容吧~

### 百度地图在隐藏的时候会报错(这个坑找了好久)

* 前提:由于项目有一个tab页展示,地图处于其中一个tab中,所以避免不了会来回隐藏

* 原因:百度地图的bug

解决办法:避免隐藏,通过top值改变,形成一种被隐藏的感觉

  • 后话:这个bug应该会被修复

### `marker`不显示

  • 前提:marker应该是直接按照提供的API就可以的,可是不知道我操作了什么,后期marker不显示了,后来经过一些实验发现了问题
  • 原因:overlay的代码放在了marker的前面,被覆盖了
  • 解决办法:将添加marker的代码放在overlay之后即可

### 画完配送范围之后无法获取地图属性发生变化的事件

  • 前提:地图初始化完之后是有个lineupdate 事件,但是画覆盖物和初始化地图引用的是不同的库,而在`BMapLib_DrawingManager.js`库中没有提供这个事件的接口,
    导致画完地图没办法获取拖拽后地图变化的各个点的坐标
  • 原因:`BMapLib_DrawingManager.js`库中就没有提供`lineupdate `事件
  • 解决办法:将`BMapLib_DrawingManager.js`库下载到本地,添加`lineupdate`事件
  • 后话:真的是没有办法,只能改库的代码

### 画配送范围时鼠标跟随

  • 前提:由于项目的需求,在画覆盖物的时候有鼠标有跟随的tip
  • 原因:`BMapLib_DrawingManager.js`库中依然没有提供
  • 解决办法:改库代码(既然之前已经改过了)

### 双击删除覆盖物的可编辑的点

  • 前提:项目需求
  • 原因:百度地图没有提供这样的功能(但是高德地图是有的)
  • 解决办法:自己写喽~在地图上触发双击事件并获取点击的经纬度坐标,利用这个坐标,遍历所有`overlay`的点经纬度坐标做比较,

在某点的经度以及纬度都在一定的差值内,就相当于是删除的这个点。

(这个差值是0.001,是自己找的,是经过一些实验发现这个差值还比较算合理)

  • 后话:这个差值总感觉还是有些偏差的

### 画配送范围的时候,右键双击

  • 前提:右键双击的时候会导致计算面积的结果为0
  • 原因:因为在右键双击的时候会传入两个相同的经纬度点,计算面积的时候没有角度,就导致最后的结果是0(高德地图在画`overlay`的时候一旦右键就删除

覆盖物,现在想想也可以这样解决,但是在这个库中右键事件应该不可以,可以尝试一下)

  • 解决办法:由于画配送范围的时候所有代码都在`BMapLib_DrawingManager.js`库中,所以依然要该这里的代码。

但是这里面又没有封装右键双击事件,自己添加上去的又不好使,就将鼠标点击的时候的坐标点和前一个坐标点比较,如果相等的就`pop()`一个

### 计算面积出错,

  • 前提:百度地图计算面积的时候不能交叉,提供的库就明显注释会计算错误,这个问题出现的方式除了画的时候图形复杂,或者点离得特别近的时候

还有一点是在画完重新拖拽的时候,将一个点离另一个点超级近的时候,也会出现

总而言之:都是因为坐标点几乎重叠,其次是图形太复杂

  • 原因:如果想要实现这个功能,必须调整传过去点的顺序,以及当点的靠的太近也要去掉其中一个,这个太麻烦了,而且在我返回overlay的时候,
    我还需要将原来点的顺序调回来,这个最后没有实现,给予了相应的错误提示,但是这个提示也是依据计算面积的库返回过来的数据判断,提示的信息也不是很理想。

### 鼠标进入tip提示

  • 前提:在画配送范围时有相应的鼠标跟随提示,但是百度地图没有提供相应的`API`
  • 解决方案:依然是改`BMapLib_DrawingManager.js`库中的代码,发现mousemoveAction这个函数里可以在画overlay时触发的回调函数,就在这里添加了相应的鼠标tip。

### 将米和像素换算

  • 前提:因为项目需求初始化的正六边形覆盖物的半径是不超过3公里,然而我需要在一个平面上计算
  • 解决办法:通过使用百度地图提供的方法`getDistance()` 获取展示地图区域的两个角之间的距离,返回单位为米,然后算出页面对角线的像素值,
    将米和像素换算一下,从而将公里和像素的单位互相转化

### 百度API不全,需要找网上资料

  • 前提:记得有挺多的,但是能想到的就这一个了。在画完配送范围之后,让图形可编辑

### 最后:百度地图存在一些坑,且码且珍惜,虽然没有使用过高德地图,但是听有经验的人士的讲述,感觉上述的很多问题高德地图是不存在的,反正各有利弊吧。

有可能有的问题会在以后修复,有的问题解决办法比较恶心,但是为了当时的场景也是没有太多办法,技术有的low,有什么更好的办法可以分享一下~嘿嘿~~非常感谢遇到问题帮助我的人~~

时间: 2024-10-15 20:45:22

百度地图遇到的问题的相关文章

百度地图API实现批量地址解析

1.前言 写这篇文章的原因是最近做一个GIS项目在网上爬取了一些数据,无奈只有地址的文字信息没有坐标信息,如何把信息显现在地图上呢?很纠结啊,查看了一下百度地图API惊奇的发现百度提供了地址解析的API,然后查看了他的Demo后豁然开朗,所以动手将自己的文字信息数据进行解析坐标信息.下面开始讲解. 2.方案 (1)自己数据库中的数据 (2)百度地图API Demo <!DOCTYPE html> <html> <head> <meta http-equiv=&qu

js中实现高德地图坐标经纬度转百度地图坐标

1 function tobdMap(x, y) { 2 var x_pi = 3.14159265358979324 * 3000.0 / 180.0; 3 var z = Math.sqrt(x * x + y * y) + 0.00002 * Math.sin(y * x_pi); 4 var theta = Math.atan2(y, x) + 0.000003 * Math.cos(x * x_pi); 5 var bd_lon = z * Math.cos(theta) + 0.00

Vue2.0与 [百度地图] 结合使用———vue+webpack+axios+百度地图实现组件之间的通信

Vue2.0与 [百度地图] 结合使用: 1.vue init webpack-simple vue-baidu-map 2.下载axios cnpm install axios; 3.在main.js中引入axios,并使用 import axios from 'axios' /* 把axios对象挂到Vue实例上面,其他组件在使用axios的时候直接 this.$http就可以了 */ Vue.prototype.$http = axios; 4.引入百度地图的js秘钥--->最好在inde

百度地图标注图标太小

1.1.1  现象 百度地图中,定位点的标注示意图标太小: 实际期望的图标是这样的: 1.1.2  原因 检查了很久,以为是打开地图时的设置问题,后来慢慢查找地图上的元素定位,终于发现原来这个图标大小是被CSS控制的,在地图元素的内部可以找到如下代码: 这个img元素就是用来显示定位图标的,可以修改这个元素的CSS属性来改变大小. 1.1.3  解决 如果要使用默认大小,则需要配置如下CSS: img {     max-width: inherit; } 原来图标变小,是因为其它CSS配置导致

Android 百度地图开发(一)--- 申请API Key和在项目中显示百度地图

标签: Android百度地图API Key  分类: Android 百度地图开发(2)  最近自己想研究下地图,本来想研究google Map,但是申请API key比较坑爹,于是从百度地图入手,其实他们的用法都差不多,本篇文章就带领大家在自己的Android项目中加入百度地图的功能,接下来我会写一系列关于百度地图的文章,欢迎大家到时候关注!   一 申请API key 在使用百度地图之前,我们必须去申请一个百度地图的API key,申请地址http://lbsyun.baidu.com/a

HTML5结合百度地图API创建地图应用

具体的百度地图API的使用方法查看百度地图API里的DEMO <style> #div1{ width:400px; height:400px; border:1px #000 solid;} </style> <script src="http://api.map.baidu.com/api?v=1.3"></script> <script> window.onload = function(){ var oInput =

百度地图SDK开发过程中遇到的问题解析

问题1. 在运行显示百度地图是出现如下错误,导致程序停止: 01-30 06:49:49.935: E/AndroidRuntime(9132): Caused by: java.lang.UnsatisfiedLinkError: Couldn't load BaiduMapSDK_v3_2_0_15 from loader dalvik.system.PathClassLoader[dexPath=/data/app/com.example.getsmsinfo-1.apk,libraryP

Android如何申请百度地图key

在开发过程中,有时候会使用到地图定位之类的功能,在使用百度地图之前,我们先要申请一个百度地图的key方才能使用,接下来,一步步教给大家如何去申请一个百度地图key 登录你的百度帐号,之后搜索---"百度地图api",如下图所示: 选择第一个,点击进去之后,往下拉,如图所示: 点击申请密钥,如图所示: 接下来如图所示: 接下去找Android SDK安全码,如图所示: 之后回到页面,将复制的东西拷贝到安全码那,之后写一个英文分号;   ,之后加上项目包名,就好,如下图: 点击提交之后,

Android百度地图开发(一)之初体验

转载请注明出处:http://blog.csdn.net/crazy1235/article/details/42614603 做关于位置或者定位的app的时候免不了使用地图功能,本人最近由于项目的需求需要使用百度地图的一些功能,所以这几天研究了一下,现写一下blog记录一下,欢迎大家评论指正! 一.申请AK(API Key) 要想使用百度地图sdk,就必须申请一个百度地图的api key.申请流程挺简单的. 首先注册成为百度的开发者,然后打开http://lbsyun.baidu.com/ap

Android应用中使用百度地图API定位自己的位置(二)

官方文档:http://developer.baidu.com/map/sdkandev-6.htm#.E7.AE.80.E4.BB.8B3 百度地图SDK为开发者们提供了如下类型的地图覆盖物: 我的位置图层(MyLocationOverlay):用于显示用户当前位置的图层(支持自定义位置图标): Poi搜索结果图层(PoiOverlay):用于显示兴趣点搜索结果的图层: 路线图层(RouteOverlay):公交.步行和驾车线路图层,将公交.步行和驾车出行方案的路线及关键点显示在地图上(起.终