百度地图之地址解析和浏览器定位以及添加可拖拽标注

这里的百度地图demo包括了常见的:地址解析、浏览器定位、IP定位、可拖拽标注

<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta name="viewport" content="initial-scale=1.0, user-scalable=no"/>
<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=4itF2ygdKkIfshFlQggs7DZA"></script>

<input type="text" id="address"/>
<input type="button" value="地图查看" onclick="showMap();"/>
<div id="lnglat" style="color:red;">当前坐标:0,0</div>
<div id="allmap" style="width:400px; height:400px; overflow:hidden; margin:0;"></div>

<script type="text/javascript">
/**
 * 百度地图API功能
 */
var map = new BMap.Map('allmap');              //创建Map实例
//<c:if test='${empty awardInfo.baiduMapLng}'>
//	map.centerAndZoom('哈尔滨市', 12);
//</c:if>
//<c:if test='${not empty awardInfo.baiduMapLng}'>
//	var point = new BMap.Point(${awardInfo.baiduMapLng}, ${awardInfo.baiduMapLat});
//	map.centerAndZoom(point, 18);
//	var marker = new BMap.Marker(point);
//	map.addOverlay(marker);
//	marker.enableDragging();
//	marker.addEventListener('dragend', function(e){
//		document.getElementById('lnglat').innerHTML = '当前坐标:' + e.point.lng + ", " + e.point.lat;
//	});
//</c:if>
//上面使用的是JSP中的C标签,适用于需要读取数据库中储存的坐标,然后将位置信息显示在地图中,并添加可拖拽标注
//var point = new BMap.Point(116.404, 39.915); //创建点坐标
//map.centerAndZoom(point, 15);                //初始化地图(设置中心点坐标和地图缩放级别)
map.centerAndZoom("哈尔滨市", 12);              //初始化地图(设置城市名和地图缩放级别)
map.addControl(new BMap.NavigationControl());  //添加平移缩放控件
map.addControl(new BMap.ScaleControl());       //添加比例尺控件
map.addControl(new BMap.OverviewMapControl()); //添加缩略地图控件
map.enableScrollWheelZoom();                   //启用滚轮放大缩小
//map.disableDragging();                       //禁止地图拖拽
//map.enableDragging();                        //允许地图拖拽(默认为允许)

/**
 * 浏览器定位(状态码说明如下)
 * BMAP_STATUS_SUCCESS            : 检索成功,对应数值"0"
 * BMAP_STATUS_CITY_LIST          : 城市列表,对应数值"1"
 * BMAP_STATUS_UNKNOWN_LOCATION   : 位置结果未知,对应数值"2"
 * BMAP_STATUS_UNKNOWN_ROUTE      : 导航结果未知,对应数值"3"
 * BMAP_STATUS_INVALID_KEY        : 非法密钥,对应数值"4"
 * BMAP_STATUS_INVALID_REQUEST    : 非法请求,对应数值"5"
 * BMAP_STATUS_PERMISSION_DENIED  : 没有权限,对应数值"6"(自1.1新增)
 * BMAP_STATUS_SERVICE_UNAVAILABLE: 服务不可用,对应数值"7"(自1.1新增)
 * BMAP_STATUS_TIMEOUT            : 超时,对应数值"8"(自1.1新增)
 */
var geolocation = new BMap.Geolocation();
geolocation.getCurrentPosition(function(r){
	console.log('浏览器定位的状态码为:' + this.getStatus());
	if(this.getStatus() == BMAP_STATUS_SUCCESS){
		var mk = new BMap.Marker(r.point);
		map.addOverlay(mk);
		map.panTo(r.point);
		document.getElementById('lnglat').innerHTML = '当前坐标:' + r.point.lng + ", " + r.point.lat;
	}else{
		//switch(this.getStatus()){
		//	case 6 : document.getElementById('lnglat').innerHTML = '请求未授权,无法提供定位服务'; break;
		//	default: document.getElementById('lnglat').innerHTML = '无法获取当前位置,您可移动地图查看'; break;
		//}
		new BMap.LocalCity().get(function(result){
			console.log('IP定位获取当前城市:' + result.name);
			map.setCenter(result.name);
		});
	}
},{enableHighAccuracy:true});

/**
 * 地图查看
 */
function showMap(){
	var address = document.getElementById('address').value;
	if('' == address){
		document.getElementById('lnglat').innerHTML = '请输入地址';
		return;
	}
	//创建地址解析器实例
	var myGeo = new BMap.Geocoder();
	//将地址解析结果显示在地图上,并调整地图视野
	myGeo.getPoint(address, function(point){
		if(point){
			map.centerAndZoom(point, 16);
			map.clearOverlays();                 //清除地图上所有的标记(map.removeOverlay(marker)可清除单个标注)
			var marker = new BMap.Marker(point); //创建标注
			map.addOverlay(marker);              //将标注添加到地图中
			marker.enableDragging();             //设置标注可拖拽(默认为不可拖拽)
			//百度坐标是先经度,再纬度,即Point(lng, lat)
			//谷歌坐标的顺序与百度恰好相反,是(lat, lng)
			//也可这样获取坐标-------------------->marker.getPosition().lng和marker.getPosition().lat;
			document.getElementById('lnglat').innerHTML = '当前坐标:' + point.lng + ", " + point.lat;
			//监听标注的拖拽事件,以便实时获取标注拖拽后的坐标
			marker.addEventListener('dragend', function(e){
				document.getElementById('lnglat').innerHTML = '当前坐标:' + e.point.lng + ", " + e.point.lat;
			});
		}
	}, '哈尔滨市');
}
</script>

百度地图之地址解析和浏览器定位以及添加可拖拽标注

时间: 2024-11-13 09:10:40

百度地图之地址解析和浏览器定位以及添加可拖拽标注的相关文章

【百度地图API】手机浏览器抓包工具及其使用方法

原文:[百度地图API]手机浏览器抓包工具及其使用方法 摘要:为了测试地图API在手机浏览器上的性能,需要给手机浏览器设置代理.通过代理,我们可以在PC上获取到抓包数据.进而对性能做进一步分析. ------------------------------------------------------ 一.手机浏览器抓包工具 Paros 3.2.13 二.如何配置 1.将电脑和手机连到同一个wifi环境中 2.找到电脑的IP 可以点击网卡图标,找到IP信息 也可以在cmd下,使用ipconfi

【百度地图API】除夕夜,大家一起来赶走“夕”——删除标注功能

原文:[百度地图API]除夕夜,大家一起来赶走"夕"--删除标注功能 任务描述: 农历12月31日是中国传统的节日——除夕.你知道除夕是怎么来的麼? “夕”在中国古代神话中,可是一个专吃小孩的怪兽呢!所以,我们过春节时要放鞭炮吓走“夕”,以求平安. 那让我们一起来除掉那些红色的“夕”吧! 如何实现: 方法一.给地图增加一个事件监听,addEventListener,当右击地图时,出现右键菜单,可删除标注. 方法二.给标注增加事件监听,右键点击标注,即可删除. 图示: 运行代码,请点击这

【百度地图API】情人节求爱大作战——添加标注功能

原文:[百度地图API]情人节求爱大作战--添加标注功能 任务描述: 2月2日是除夕,2月14立马来!即将到来的情人节,你想送TA一份什么礼物呢? 不如,在你们居住的地方,画个大大的桃心,表达你对TA的爱意吧! 如何实现: 给地图增加一个事件监听,addEventListener: 当鼠标点击地图时,首先获取改点坐标,其次在改点坐标处增加一个红色标注. 图示: 运行代码,请点击这里. 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Tr

百度地图api将可视区域定位到当前所在位置

1.前言 开头不说点什么,总是有点不习惯.还是说点什么吧,关于百度地图,我用的次数还是比较多的,没办法,需求呀.好吧,在用百度地图的时候,确实有过很多需求,不过好在百度地图很强大,每次需求在探索后都能满足功能.以后将百度地图中所遇到的一些常见的功能整理一下,也方便一些童鞋参考.我的有一个项目中,就是要一开始将地图的可视区域定位在当前位置.其实很简单,网上一搜一大堆. 2.详情 说的再多,不如贴代码更来的直白.不过使用百度地图,一定要有ak.这个我想没有人不知道吧 1.引入js文件 1 <scri

微信H5页面嵌入百度地图---解决手机的webKit定位,ios系统对非https网站不提供支持问题

<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=yGQt3GBeFuzNIG9OlnOZ3u4A5H3WcSe5"> </script> <script type="text/javascript" src="http://developer.baidu.com/map/jsdemo/demo/con

ionic cordova 引用百度地图以及利用手机GPS定位

首先引入百度地图 在html文件里面加入 <head> <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=你的密钥"></script> //申请一个百度密钥,建议申请浏览器版的比较方便测试 </head> <body> <button id = "getPosition"&g

关于百度地图js api的getCurrentPosition定位不准确的解决方法

很久之前帮大叔解决了一个gps坐标转换为百度地图坐标的问题.今天大叔又给我讲百度地图定位不准.我查了一下api,用了官方给出的这样一组函数. 1 //创建查询对象 2 var geolocation = new BMap.Geolocation(); 3 4 //调用getCurrentPosition函数 5 geolocation.getCurrentPosition(function (position) { 6 7 //如果查询成功 8 if (this.getStatu() == 'B

(百度地图API)v4-2版本定位功能

这几天在看郭霖老师的大作,在百度地图这一张卡的好久,原因是因为百度更新迭代的速度太快了,导致老师的书上的版本已经淘汰又淘汰了,不过还是给了我很多的启发的啊.今晚自己就实现了一下百度地图的定位功能. 百度地图API的什么的,也就不多说了.官网上介绍的也比较详细,还都是中文的,仔细阅读下就行,对了,我用的是v4-2的版本.感觉只有晚上11点以后的工作效率才会翻倍啊,大家有没有这个体会啊,最近想做一款跑步的软件,当然是很简单的那种,做完了会贴上代码和大家来讨论的. 官网链接:http://develo

iOS 使用百度地图,仿滴滴打车的定位方法。拖动时时定位

这里的思路: (1)把图片放到屏幕的中间,这样在拖动的时候就不会跟随着地图移动了. (2)百度地图提供了,View坐标和地理坐标转换的方法.正式这个方法的存在,方便我们及时的获取拖动后的,屏幕中间的图片所在位置的经纬度. 当拖动地图的时候,定位的图片一直在屏幕的中央,当拖动停止的时候会显示出具体的信息 #import "HouseTypeMapVC.h" @interface HouseTypeMapVC ()<BMKMapViewDelegate,BMKLocationServ