百度地图js小结
1、获取javascript API 服务方法,首先申请密钥(ak),才可成功载入APIJS文件。
用法例如以下:
<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=您的密钥"></script>
假设须要限制区域,那么须要引入以下的js
<!-- 区域限制js -->
<script type="text/javascript" src="http://api.map.baidu.com/library/AreaRestriction/1.2/src/AreaRestriction_min.js"></script>
2、设置样式,冲满全屏,弹出窗体的样式
body, html,#l-map{width: 100%;height: 100%;overflow: hidden;margin:0;}
3、调用百度地图
var map = new BMap.Map("l-map"); //创建地图实例
var point = new BMap.Point(111.818239, 41.386087); //创建点坐标
map.centerAndZoom(point, 5); //初始化地图,设置中心点坐标和地图级别
map.enableScrollWheelZoom();
map.addControl(new BMap.NavigationControl()); //加入�默认缩放平移控件
4、加入�缩放平移控件
map.addControl(new BMap.NavigationControl()); //加入�默认缩放平移控件
map.addControl(new BMap.NavigationControl({anchor: BMAP_ANCHOR_TOP_RIGHT, type: BMAP_NAVIGATION_CONTROL_SMALL})); //右上角,仅包括平移和缩放button
map.addControl(new BMap.NavigationControl({anchor: BMAP_ANCHOR_BOTTOM_LEFT, type: BMAP_NAVIGATION_CONTROL_PAN})); //左下角,仅包括平移button
map.addControl(new BMap.NavigationControl({anchor: BMAP_ANCHOR_BOTTOM_RIGHT, type: BMAP_NAVIGATION_CONTROL_ZOOM})); //右下角,仅包括缩放button
map.enableScrollWheelZoom(); //启用滚轮放大缩小,默认禁用
map.enableContinuousZoom(); //启用地图惯性拖拽,默认禁用
5、区域限制必须引入上面的区域限制js
区域限制样例是仅仅显示北京市
var b = new BMap.Bounds(new BMap.Point(116.027143, 39.772348),
new BMap.Point(116.832025, 40.126349));
try {
BMapLib.AreaRestriction.setBounds(map, b);
} catch (e) {
alert(e);
}
6、加入�覆盖物,计时器调用覆盖物
//加入�覆盖物
function getBoundary(){
var bdary = new BMap.Boundary();
bdary.get("内蒙古", function(rs){ //获取行政区域
var count = rs.boundaries.length; //行政区域的点有多少个
for(var i = 0; i < count; i++){
var ply = new BMap.Polygon(rs.boundaries[i], {strokeWeight: 2, strokeColor: "#0000ff" ,fillColor: ""}); //建立多边形覆盖物 fillColor字体显示出来
map.addOverlay(ply); //加入�覆盖物
map.setViewport(ply.getPath()); //调整视野
}
});
}
//计时器调用加入�覆盖物
setTimeout(function(){
//清除地图覆盖物
map.clearOverlays();
map.centerAndZoom(111.818239, 41.386087, 6); // 设置地图坐标,级别
//加入�行政区域覆盖
getBoundary();
}, 1000);
7、加入�标注
//point经纬度,txtinfo提示信息,type图片类型
function addMarker(point, txtInfo, type) {
var infoWindow = "";
var marker = new BMap.Marker(point, { icon: mapIcon(type) });
marker.addEventListener("click", function() {
infoWindow = new BMap.InfoWindow(txtInfo);
this.openInfoWindow(infoWindow);
});
map.addOverlay(marker); //加入�标注
marker.setAnimation(BMAP_ANIMATION_BOUNCE); //动画效果
}
//创建ICON
function mapIcon(type) {
var mappng;
switch (parseInt(type)) {
case 1:
mappng = "${pageContext.request.contextPath}/images/triangle.png";
break;
case 2:
mappng = "${pageContext.request.contextPath}/images/ban.png";
break;
}
var mapIcon = new BMap.Icon(mappng,
new BMap.Size(24, 24), {
offset: new BMap.Size(0, -5),
imageOffset: new BMap.Size(0, 0)
});
return mapIcon;
}
8、移除标注
map.removeOverlay(marker); //移除标注点
function removeMarker() {
var mkrs = map.getOverlays(); //获取地图上的标注,从0開始循环
for (var i=0; i < mkrs.length;i++) {
//object Polygon 是行政区域描边覆盖物,不移除
if(mkrs[i] != "[object Polygon]"){
map.removeOverlay(mkrs[i]); //移除标注点
}
}
}
9、加入�文字
function addTxt(point,txtInfo){
var opts = {
position : point, // 指定文本标注所在的地理位置
offset : new BMap.Size(-20, 5) //设置文本偏移量
}
var label=new BMap.Label(txtInfo,opts);
label.setStyle({
color : "#000000",
fontSize : "12px",
height : "20px",
lineHeight : "20px",
fontFamily:"微软雅黑",
border:"#000000"
});
map.addOverlay(label);
}
10、输入地址获取经纬度
public static final String KEY_1 = "您的密钥(ak)";
/**
* 返回输入地址的经纬度坐标
* key lng(经度),lat(纬度)
*/
public static Map<String,String> getGeocoderLatitude(String address){
BufferedReader in = null;
try {
//将地址转换成utf-8的16进制
address = URLEncoder.encode(address, "UTF-8");
// 假设有代理,要设置代理,没代理可凝视
// System.setProperty("http.proxyHost","192.168.1.188");
// System.setProperty("http.proxyPort","3128");
URL tirc = new URL("http://api.map.baidu.com/geocoder?address="+ address +"&output=json&key="+
KEY_1);
in = new BufferedReader(new InputStreamReader(tirc.openStream(),"UTF-8"));
String res;
StringBuilder sb = new StringBuilder("");
while((res = in.readLine())!=null){
sb.append(res.trim());
}
String str = sb.toString();
Map<String,String> map = null;
if(StringUtils.isNotEmpty(str)){
int lngStart = str.indexOf("lng\":");
int lngEnd = str.indexOf(",\"lat");
int latEnd = str.indexOf("},\"precise");
if(lngStart > 0 && lngEnd > 0 && latEnd > 0){
String lng = str.substring(lngStart+5, lngEnd);
String lat = str.substring(lngEnd+7, latEnd);
map = new HashMap<String,String>();
map.put("lng", lng);
map.put("lat", lat);
return map;
}
}
}catch (Exception e) {
e.printStackTrace();
}finally{
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
public static void main(String args[]){
Map<String, String> json = MapAction.getGeocoderLatitude("北京市");
System.out.println("lng : "+json.get("lng"));
System.out.println("lat : "+json.get("lat"));
}
百度地图js小结的更多相关文章
- 百度地图--JS版
百度地图JS版本 ----选择关键字地图展示对应地址---- CSS body, html { width: %; height: %; margin: ; font-family: "微软 ...
- 外部引入的js 判断js脚本加载是否完成,完成后执行 相应的动作(以引入百度地图js为例)
可以使用JQuery的 $.getScript(url,function(){});方法 $.getScript("http://api.map.baidu.com/getscript?v= ...
- 百度地图js根据经纬度定位和拖动定位点
<!DOCTYPE html><html><head> <meta http-equiv="Content-Type" content=& ...
- 百度地图js版定位控件
一 概述 百度地图在最新版已加入浏览器定位控件,个人认为应该是既高德地图更新了一个浏览器也能定位功能后,百度不甘落后自己简简单单,草草写了个这个功能的定位控件 GeolocationControl 这 ...
- 百度地图JS API不能使用position:fixed
用于放置百度地图的dom元素及其任何一级父元素设置position:fixed属性时,js会报如下错误: Uncaught TypeError: Cannot read property 'offse ...
- 百度地图js lite api 支持点聚合
百度地图lite api 是专门为h5 绘制海量点设计的,但是偏偏忽略掉了点聚合的需求,所以需要自己动手,做一次二次改造. 我们知道点聚合需要引入开源库: MarkerClusterer: http ...
- 百度地图 JS API开发Demo01
百度地图DEMO <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http: ...
- 关于百度地图js api的getCurrentPosition定位不准确的解决方法
很久之前帮大叔解决了一个gps坐标转换为百度地图坐标的问题.今天大叔又给我讲百度地图定位不准.我查了一下api,用了官方给出的这样一组函数. //创建查询对象 var geolocation = ne ...
- 百度地图 js api 实现 line 居中显示
项目中有个需求需要在百度地图的中心显示画的线,以前用过mapPanto这个方法,传入坐标就可以将地图平移到这个坐标,不过不知道如何获取线的中心点,看了别人的代码,有以下两个函数可以实现这个功能 get ...
随机推荐
- Java学习(API及Object类、String类、StringBuffer字符串缓冲区)
一.JAVA的API及Object类 1.API 概念: Java 的API(API: Application(应用) Programming(程序) Interface(接口)) Java API就 ...
- 【LOJ】#2012. 「SCOI2016」背单词
题解 我们发现第一种操作肯定不可取,每个节点里它最近的点是它最长出现过的后缀,发现这就是AC自动机的fail节点,根据fail的关系这会是一棵树,而一个单词的前一个序号最大的后缀必定是它的父亲 然后我 ...
- CentOS7 logstash配置部署
(1)logstash介绍 `Logstash是一个开源的数据收集引擎,可以水平伸缩,而且logstash是整个ELK当中拥有最多插件的一个组件,其可以接收来自不同源的数据并统一输入到指定的且可以是不 ...
- PHP包管理
前言 在nodejs中,存在npm,python中也存在pip,而php之前不存在类似的东西,导致想要安装一个包,只能去复制代码,但是现在,使用composer可以简单的安装一个包(但是compose ...
- 洛谷P3444 [POI2006]ORK-Ploughing [枚举,贪心]
题目传送门 ork 格式难调,题面就不放了. 分析: 一道偏难的贪心和枚举题.考试的时候是弃疗了...yyb巨佬已经讲的很详细了,推荐他的博客.这里小蒟蒻就只放代码了. Code: #include& ...
- JSP中的9大内置对象四大域与servlet里的三大域
九大内置对象 隐式对象 说明 out 转译后对应JspWriter对象,其内部关联一个PringWriter对象 request 转译后对应HttpServletRequest/ServletRequ ...
- javascript类型系统
前面的话 除了对象之外,数组Array类型可能是javascript中最常用的类型了.而且,javascript中的数组与其他多数语言中的数组有着相当大的区别.本文将介绍javascript中的数组A ...
- 深入理解javascript函数系列第三篇
前面的话 函数是javascript中特殊的对象,可以拥有属性和方法,就像普通的对象拥有属性和方法一样.甚至可以用Function()构造函数来创建新的函数对象.本文是深入理解javascript函数 ...
- 克鲁斯卡尔(并查集)hdu 1233
还是畅通工程 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Sub ...
- Request Response 跳转页面的理解
1.response 跳转页面 private void writeContent(String content) { HttpServletResponse response = ((Servlet ...