百度地图JavaScript API 的运用
来源:互联网 发布:商业标书知乎 编辑:程序博客网 时间:2024/05/22 02:05
最近在项目中用到了地图,包含了移动标注修改坐标位置,点击标注弹出提示框等等功能,在这里我就对百度地图的一个简单运用进行分享一下:
1.首先加载百度地图JS,在引用的时候需要用到自己的百度地图ak秘钥,这里我就用*号代替我的秘钥的显示了,各位使用自己的秘钥ak,具体如何生成秘钥ak,详情见百度地图 JavaScriptAPI----->获取秘钥。这里的秘钥指的就是ak码,具体如下:
// 加载百度地图jsvar script = document.createElement("script");script.src = "http://api.map.baidu.com/api?v=2.0&ak=***************" + "*********"; //这种方式为v2.0版本的引用方式document.body.appendChild(script);
2.创建一个地图实例(在创建地图实例的时候,如果报BMap is not defined的话,则证明百度地图的JS还没有加载完成,创建地图实例需要加一个延时setTimeout,当然,也有可能是网络状态不佳):
var mapParam.map = new BMap.Map("baiduMap",{enableMapClick: false});
其中的参数baiduMap是显示地图的dom节点的id,
<div id="baiduMap"></div>
第二个参数enableMapClisk设置为false,意味着当你点击地图上的某个覆盖物时(地铁、公交站,地区等等),不会出现公交、驾驶、等的线路规划窗口,如果不传该参数,默认是能查看线路规划窗口的
3. 设置地图的中心点坐标
point的参数分别为经度和纬度,centerAndZoom的两个参数,第一个参数是创建的点的坐标。第二个参数是设置地图的缩放级别。然后使用maker方法创建标注,当打开地图时。就能看到标注了
var point = new BMap.Point(longitude, mData.latitude); // 创建点坐标mapParam.map.centerAndZoom(point, 18); // 初始化地图,设置中心点坐标和地图级别var marker= new BMap.Marker(point); // 创建标注mapParam.map.addOverlay(marker); // 将标注添加到地图中
完成上面这三步我们就可以得到一个简单的地图了。这时候我们可以根据我们所需要的功能进行补全:
例:拖拽标注
enableDragging方法和disableDragging方法是两个对立的方法,enableDragging是设置标注可拖动(这常常用来进行拖动定位,在地图上标注出新的位置),disableDragging是用来设置禁止拖动标注的(这一般仅仅只用作位置的标注),enableScrollWheelZoom方法是用来设置鼠标缩放地图的。
marker.enableDragging(); //可拖map.addOverlay(marker); // 将标注添加到地图中map.enableScrollWheelZoom(true); // 鼠标缩放// map.disableDragging(); //禁止拖拽
例:监听标注的拖拽
marker.addEventListener("onmouseup", function() { var p = marker.getPosition(); //获取marker的位置 mapParam.longitude = p.lng; mapParam.latitude = p.lat; //根据经纬度获得对应的地址 var point = new BMap.Point(p.lng, p.lat); var gc = new BMap.Geocoder(); gc.getLocation(point, function(rs) { var addComp = rs.addressComponents; mapParam.address = addComp.province+addComp.city + addComp.district + addComp.street + addComp.streetNumber; });});
例:给标注添加click事件
marker.addEventListener("click", function () { //事件内容});
例:自定义标注图标
BMap.Icon 的四个参数,第一个参数是图标的位置(如果有多个图标,则使用循环进行设置图标),点击查看默认的百度地图标注,可以做一组自定义的图标,图标的size和图标的大小成比例的,anhor参数是用于设置标注图标停靠的位置,在2.0之前的版本使用的是offset,imageOffset是用来设置图标的偏移量的,
var myIcon = new BMap.Icon("http://api.map.baidu.com/img/markers.png", new BMap.Size(23, 25), { anchor: new BMap.Size(0, 0), imageOffset: new BMap.Size(0, 0 - 10* 25) }); marker = new BMap.Marker(point, { icon: myIcon }); mapParam.map.addOverlay(marker);
例:点击标注弹出信息框
openInfoWindow方法是用来打开提示窗口的,一般用在标注的click事件里,可以自己修改默认的一些样式,这就看个人怎么定制了
//pop弹窗标题var title = '<div style="font-weight:bold;color:#CE5521;font-size:14px">' + title + '</div>';//pop弹窗信息var html = [];html.push('<table cellspacing="0" style="table-layout:fixed;width:100%;' + 'font:12px arial,simsun,sans-serif"><tbody>');html.push('<tr>');html.push('<td style="vertical-align:top;line-height:16px;width:38px;' + 'white-space:nowrap;word-break:keep-all">地址:</td>');html.push('<td style="vertical-align:top;line-height:16px">'+address+ ' </td>');html.push('</tr>');html.push('</tbody></table>');var infoWindow = new BMap.InfoWindow(html.join(""),{ title: title, width:200})marker.openInfoWindow(infoWindow);})
例:地址解析(根据地址解析当前地址的经纬度,可以批量解析)
//根据省市区对地址进行解析var latitude = '';var longitude = '';var myGeo = new BMap.Geocoder();var address = '深圳市图书馆'//可以批量解析,只需要把地址放进数组里即可var addressArray = [address];myGeo.getPoint(addressArray, function (point) { latitude = point.lat; longitude = point.lng;}, "全国");;
百度地图还有很多用法,我在这里就不一一叙述了,如果有其它的特性不会用,或者有不明白的朋友欢迎评论留言,大家一起共同探讨
- 百度地图JavaScript API 的运用
- 百度地图 JavaScript API
- 百度地图API详解和运用
- javascript调用百度地图api
- 调用百度地图Javascript API
- 百度地图Javascript Api定位
- 百度地图JavaScript API本地搜索的结果面板
- 【百度地图JavaScript API】手机端浏览器定位的实现
- 【百度地图JavaScript API】手机端浏览器定位的实现
- 百度地图 Javascript API 遍历搜索结果
- 百度地图javascript api之入门demo
- 百度地图 JavaScript API 极速版 开发体会
- “百度地图JavaScript API”简单实例开发
- 百度地图JavaScript API经纬度查询-MAP
- 百度地图API之JavaScript 开源库1
- 百度地图API之JavaScript开源库2
- 调用百度地图api (javascript)
- 百度地图API之JavaScript 开源库1
- 搭建高可用mongodb集群(四)—— 分片
- Easy-37
- Android APK 瘦身
- 关于数据库的笔记
- 机器学习零基础?手把手教你用TensorFlow搭建图像识别系统(一)| 干货
- 百度地图JavaScript API 的运用
- 【分治】洛谷 P1226 取余运算||快速幂
- fastjson 与jackson 工具类封装
- 微信开发基础篇
- [poj1821] Fence DP单调队列优化
- Git 清理无效的远程追踪分支
- Android 微信登录
- HDUOJ 1062 textreverse /c++
- slf4jlog maven 配置