百度地图API自定义地图

news/2024/11/7 9:29:17/

百度地图API自定义地图

一、使用说明   JavaScript API v1.4及以前版本无须申请密钥(ak),自v1.5版本开始需要先申请密钥(ak),才可使用。仅JavaScript API V2.0 版本支持https,其他JavaScript API版本均不支持。手机端引用需要添加meta标签<meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> (这里需要注意一点:meta标签中的值不能改变,有些移动端写法可能改变了meta标签的值会造成移动端地图字体特别小的问题)。在使用百度地图JavaScript API服务时,需使用百度BD09坐标,如使用其他坐标( WGS84、GCJ02)进行展示,需先将其他坐标转换为BD09。

二、百度地图使用

html中

<div style="width:100%;height:550px;" id="map"></div>      //一定要有宽度和高度来显示地图

1、引用百度地图API文件 

http://api.map.baidu.com/api?v=1.4 //参数v表示您加载API的版本,使用JavaScript APIv1.4及以前版本可使用此方式引用。
http://api.map.baidu.com/api?v=2.0&ak=您的密钥  //使用JavaScript APIv2.0请先申请密钥ak,按此方式引用。

2、创建地图实例

var map = new BMap.Map("map");       //BMap命名空间下的Map类表示地图,通过new操作符可以创建一个地图实例,参数可以是元素id也可以是元素对象

3、创建点坐标

var point = new BMap.Point(116.404, 39.915);  //用BMap命名空间下的Point类来创建一个坐标点

4、地图初始化

map.centerAndZoom(point, 15);  //BMap.Map.centerAndZoom()方法要求设置中心点坐标和地图级别。地图必须经过初始化才可以执行其他操作。

以上这样就可以实现一个百度地图的简单调用

5、地图状态的变化

map.panTo(new BMap.Point(116.409, 39.918));    //panTo()方法将让地图平滑移动至新中心点,如果移动距离超过了当前地图区域大小,则地图会直跳到该点。

6、添加控件配置

map.enableScrollWheelZoom(true); //启用滚轮放大缩小
//向地图中添加缩放控件
var ctrlNav = new window.BMap.NavigationControl({anchor: BMAP_ANCHOR_TOP_LEFT,type: BMAP_NAVIGATION_CONTROL_LARGE
});
map.addControl(ctrlNav);
//向地图中添加缩略图控件
var ctrlOve = new window.BMap.OverviewMapControl({anchor: BMAP_ANCHOR_BOTTOM_RIGHT,isOpen: 1
});
map.addControl(ctrlOve);
//向地图中添加比例尺控件
var ctrlSca = new window.BMap.ScaleControl({anchor: BMAP_ANCHOR_BOTTOM_LEFT
});
map.addControl(ctrlSca);
//地图标记点击事件;info是信息数组,index是信息数组中索引
map.clickelen = function(elem,info,index){elem.openInfoWindow(info[index]);
};
map.addControl(new BMap.NavigationControl());    //添加平移缩放控件
map.addControl(new BMap.ScaleControl());     //添加比例尺控件
map.addControl(new BMap.OverviewMapControl()); //添加缩略图控件

7、修改控件样式

var opts = {type: BMAP_NAVIGATION_CONTROL_SMALL}       //修改平移控件样式
map.addControl(new BMap.NavigationControl(opts));
var opts = {offset: new BMap.Size(150, 5)}       //修改比例尺的偏移位置
map.addControl(new BMap.ScaleControl(opts));     

8、判断是否支持h5浏览器定位

function map_init() {//判断是否支持h5浏览器定位startmap= new BMap.Map("map");if (navigator.geolocation){window.navigator.geolocation.getCurrentPosition(function(position){//ios10var geolocation = new BMap.Geolocation();geolocation.getCurrentPosition(function(position){lat = position.point.lat;lng = position.point.lng;mapGPS(lat,lng,10);    //获取成功定位后执行的函数},function(error){alert("errorCode:"+error.code+",errorMessage:"+error.message);console.log("errorCode:"+error.code+",errorMessage:"+error.message);});//IOS10 end}, function(error){// oalert("GPS信号不稳定,无法精确定位");function theLocation(cityName){//根绝城市名定位var city = cityName;if(city != ""){map.centerAndZoom(cityName,11);      // 用城市名设置地图中心点}}function myFun(result){var cityName = result.name;//获取城市名cityNametheLocation(cityName);}var myCity = new BMap.LocalCity();myCity.get(myFun);});}else{alert("无法获取当前位置");}//判断是否支持h5浏览器定位end
}

9、动态添加多个标注点以及点击标注点弹出信息框

var point = new Array(); //存放标注点经纬信息的数组
var marker = new Array(); //存放标注点对象的数组
var info = new Array(); //存放提示信息窗口对象的数组
var markerArr;//获取到的数据集合
var markerArrlen;//后台传过来的数据长度
//调用地图
function mapall(markerArr,markerArrlen,point,marker,info,markMan){for (var i = 0; i < markerArr.length; i++) {var p0 = markerArr[i].lng ; //var p1 = markerArr[i].lat ; //按照原数组的point格式将地图点坐标的经纬度分别提出来var me_point = new window.BMap.Point(p0, p1); //循环生成新的地图点//将gps坐标转换成百度坐标markMan++;var me_point2 = new window.BMap.Point(p0, p1); //循环生成新的地图点var imgurl ="${context}/resources/cellar/images/map_me2.png";var myIcon = new BMap.Icon(imgurl, new BMap.Size(18,33));marker[i] = new BMap.Marker(me_point2,{icon:myIcon});  // 创建标注map.addOverlay(marker[i]);info[i] = new window.BMap.InfoWindow("<p class='addresstext'>姓名:" + markerArr[i].name + "</br>地址:" + markerArr[i].address + "</br> 电话:" + markerArr[i].mobile + "</br></p >"); // 创建信息窗口对象if(markMan==parseInt(markerArrlen)){for(var h=0;h<markerArr.length;h++){//标记绑订点击事件;var info2 = info;marker[h].index=h;marker[h].addEventListener("click", function(){map.clickelen(this,info2,this.index);});}}}
}

 

 

10、清除之前添加信息

map.clearOverlays();    //清除之前添加的标注等

11、让自己写的所有地图标注显示在最佳视野内的实现方法

map.setViewport(viewpoints);
这里需要注意的是:viewpoints必须是个数组,不能是单个点。
还可能遇到的bug:viewpoints按数组添加的,但是刚进地图没有显示出来得缩小地图才能看到,可能的原因是:
map.centerAndZoom("北京市", 12); map.setViewport(points); //你的centerAndZoom函数设置成城市名了,该情况下百度会做很多后续处理,
map.setViewport(points);这句代码是执行了的,但是map.centerAndZoom("北京市", 12); 这句代码好像有类似回调函数之类的操作,他会覆盖map.setViewport(viewpoints);这句代码的执行结果。

http://www.ppmy.cn/news/622475.html

相关文章

百度地图缩放级别与比例尺的关系

背景 最近做了一个项目&#xff0c;需要用户在缩放百度地图的时候&#xff0c;能根据地图缩放级别以及地图中心坐标&#xff0c;动态更新地图上的标注点&#xff08;比如根据地图缩放级别以及地图中心坐标动态获取手机屏幕视界范围内的共享单车位置&#xff09;&#xff0c;这…

android 百度地图 黑屏,百度地图 Fragment之间切换黑屏现象解决方案

用过百度地图的人多很忧伤,各种bug, 已无力吐槽,最无语的可能就是会出现黑屏现象,比如一个Activity包含三个Fragment, 其中一个Fragment嵌套MapView使用,在切换这三个Fragment时会出现明显的黑屏,这个问题出现很久了,很早的SDK版本就存在,现在最新的SDK版本依然存在这个…

php百度地图地址解析失败,百度地图web定位超时或不准

在web上使用了百度地图webapi&#xff0c;发现第二次定位的时候仍然显示的是上一次定位的信息 然而我在百度手机web版(就是map.baidu.com/mobile)重新授权定位后&#xff0c;发现回复的地址仍是以前定位的地址 请问这是百度地图手机web版的问题还是我机子的问题&#xff1f; 测…

百度地图android兼容,支持离线地图 百度地图Android版上线

尽管流量越来越便宜&#xff0c;但手机地图软件还是希望能够为用户节省下这笔资金。使用离线地图包&#xff0c;不仅节省了流量同时也省去了联网等待的时间&#xff0c;让定位或者导航功能更加快捷。继Symbian版之后&#xff0c;百度手机地图再次推出了Android版&#xff0c;同…

HTML5百度地图规划路线,百度手机地图手动设置地图路线的方法 路线选择方法

我们出行的时候总是要用到百度手机地图的。不少用户用百度手机地图来代替车载导航&#xff0c;一般情况下&#xff0c;我们选定目的地后百度地图就会自动划定路线&#xff0c;但是如果你需要中途经过一些地点就需要手动选择路线&#xff0c;下面就教大家百度手机地图路线选择方…

如何配置百度地图应用访问白名单

百度地图的应用有四种类型&#xff0c;移动端&#xff08;ios和Android&#xff09;不需要ak、浏览器端需要设置Referer白名单、服务器端需要设置IP白名单。 接下来会在官方给出的白名单配置的基础上进一步说明&#xff1a; 1、浏览器端白名单 什么是Referer&#xff1f;htt…

java百度地图离线开发_【“零起点”--百度地图手机SDK】如何使用离线地图?

摘要:用户使用地图的时候,希望不联网就能展示地图。这时,就需要使用到离线地图了。如何在百度地图SDK里引入离线地图呢? ------------------------------------------------------------------------------------------------------------------- 相关阅读: -------------…

android百度地图导航功能开发,Android百度地图应用开发基础知识

一、概述 这一章先来点有意思的百度地图应用示例,然后再分章详细介绍用C#开发Android App的各种基本技术。 本章以百度官网2016年1月发布的地图API(3.7.1版)为例,演示如何用C#和VS2015编写百度地图应用程序,这些示例程序既可以在Android 6.0的x86模拟器中运行,也可以发布到…