在做移动端应用时经常用到百度地图API,百度API有强大的示例和文档,开发之前去百度相关网站注册密钥,很块博主只花了几分钟
例子1:输入特定关键字绘制地图标识结果:
先实例化需要的类
// 创建Map实例 var map = new BMap.Map("l-map"); var localSearch = new BMap.LocalSearch(map);
注册事件
$("#btnSearch").click(function () { var content = $("#txtSearch").val(); searchByStationName(content); });
函数
//通过关键字查询经纬度 function searchByStationName(searchContent) { map.clearOverlays();//清空原来的标注 //要查找的内容 var keyword = searchContent; localSearch.setSearchCompleteCallback(function (searchResult) { //获得需要得到的坐标 var poi = searchResult.getPoi(0); if (!poi) { alert("百度API没有搜索到该地址"); } //设置中心点 map.centerAndZoom(poi.point, 13); // 创建标注,为要查询的地方对应的经纬度 var marker = new BMap.Marker(new BMap.Point(poi.point.lng, poi.point.lat)); //在地图上添加标识 map.addOverlay(marker); //点击标识后显示的内容 var content = "你要查找的地方<br/><br/>经度:" + poi.point.lng + "<br/>纬度:" + poi.point.lat; //定义信息窗口 var infoWindow = new BMap.InfoWindow("<p style='font-size:14px;'>" + content + "</p>"); //添加点击事件监听 marker.addEventListener("click", function () { this.openInfoWindow(infoWindow); }); }); localSearch.search(keyword); }
效果:
例子2:将标识的颜色改为蓝色
其实这个是个很简单的功能,只是在API界面我没找到,那好吧自己写个例子
// 创建Map实例 var map = new BMap.Map("l-map"); //获取当前浏览器坐标 var geolocation = new BMap.Geolocation(); //获得当前浏览器在百度地图上的经纬度 geolocation.getCurrentPosition(function (r) { //获取成功 if (this.getStatus() == BMAP_STATUS_SUCCESS) { //创建图标 var myIcon = new BMap.Icon("http://api.map.baidu.com/img/markers.png", new BMap.Size(23, 25), { offset: new BMap.Size(10, 25), imageOffset: new BMap.Size(0, 0 - 10 * 25) }); //创建标识 var mk = new BMap.Marker(r.point, { icon: myIcon }); //将标识加入地图 map.addOverlay(mk); //设置中心点 map.centerAndZoom(new BMap.Point(r.point.lng,r.point.lat), 13);
其实关键就是这句
效果如下
这是因为其实这就是一个png的图片
所以如果不喜欢蓝色的标识 只需要将参数10 替换其他即可