百度地图2
百度地图(2)
核心类Map
:画地图必须调用的var map = new BMap.Map("allmap");
其中allmap
是想要画地图的dom节点的id
。其中map
可以控制整个地图的缩放、移动、以及是否加入一些自定义的图片,以及添加点击事件等等操作都需要这个对象,map
是整个地图的核心对象。
定位
定位的方式有浏览器自带的方式Geolocation
,还有根据详细地址或者经纬度来定位Geocoder
。
Geolocation
:是调用了浏览器自带的定位接口,如果浏览器不支持会返回null
Geocoder
:支持经纬度getLocation(point: Point, callback: Function, options: LocationOptions)
以及地址的方式getPoint(address: String, callback: Function, city: String)
经纬度的定位的坐标是百度的坐标,如果是其他的经纬度可以掉调用百度的逆地址解析成百度坐标,但是这样定位就会有偏差。
最好的方式是先根据经纬度定位(画地图),如果不准确,让用户自己输入地址或者用户自己操作地图,来定位。其中地址定位是很准确的。调用Geocoder
定位的结果会返回一个GeocoderResult
对象,其中的包含了经纬度,省市区,以及周边的一些地方点surroundingPois
,周边可以做个列表给用户选择。
可以说和定位相关的离不开这个对象Geocoder
,可以去官方文档好好研究一番Geocoder文档
控件类
控件类就是在现画出的地图上添加一些操作面板(按钮等),操作地图的缩放,移动,以及切换全景模式等操作。如果要通过代码的方式操作,完全可以在map
这个对象中操作。添加的时候也要通过addControl(control: Control)
,其实操作这些控件本质上是调用map
中的方法。
覆盖物
覆盖物最常见的是红色水滴状的图标,或者一些公交的路线,这些就是覆盖物,而且这些覆盖物可以定义事件,点击这些覆盖物后可以有后续的操作。而且可以自定义覆盖物(图片覆盖物)
像Icon
、Point
是一些接口需要用到的参数,用这些构造函数生成的数据符合哪些接口的要求,其实类似接口interface
最后
地图的接口大多都集成在map
这个对象中了,除了定位这些服务类
,其他的类都是辅助map
中的接口的。百度有哪些功能,看map
和服务类
如果想获取地图中某个点的信息,如我想知道地图中那个点的经纬度,可以通过给map
定义一个点击事件,点击事件会返回当前点的信息给回调函数。记录这些经纬度点,你可以画路线图等等
在微信公众号中用百度地图:先用的微信的定位获取经纬度,再用百度的逆地址转为百度经纬度,最后用转化后的经纬度去定位以及画地图(居中当前定位点),最后的精准定位交给用户去决定,因为经纬度定位的效果会有误差,这很有必要。最好下方出现个周边的列表让用户去选择比较接近的地址,毕竟这些周边是大众都知道的。上方一个地址搜索框,根据输入的地址去定位以及移动地图的中心点,并且生成一个水滴覆盖物,当用户点击这个水滴覆盖物,确定最终的定位。其实根据地址去定位是最准确的,但是如果经纬度误差比较小效果是最好的。
效果:经纬度定位效果最好、如果有误差根据搜索栏地址去定位、最重要的是用户可以操作地图,自主定位。