<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<style type="text/css">
body, html,#allmap {width: 100%;height: 100%;overflow: hidden;margin:0;font-family:"微软雅黑";}
.button-full{
position: fixed;
bottom: 0;
left: 0;
z-index: 999;
height: 50px;
width: 100%;
line-height: 50px;
font-size: 16px;
text-align: center;
color: #fff;
background: #333;
text-decoration: none;
}
</style>
<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak= ***Your ak"></script>
<title>地图展示</title>
</head>
<body>
<div id="allmap"></div>
<a id="chosedBtn" class=" button-full">选择这个地址</a>
</body>
</html>

javascirpt

<script type="text/javascript">
//创建默认初始化Map实例
(function(){ mapObj = {
com: {
map : new BMap.Map("allmap"),
infoWindow : new BMap.InfoWindow("正在载入..", {offset : new BMap.Size(20, -60)}),
icon: new BMap.Icon("__IMG__/locate.png", new BMap.Size(60, 60)),
iconOffsetSize: new BMap.Size(0, -30),
chosedAddr: ""
}, init: function(){
var _this = this; _this.default(); _this.initLocation().then(function(result){
//清除掉默认的markerDefault
_this.com.map.clearOverlays() var marker = result.mk;
var point = result.pt; //取得当前位置的名字
_this.getAddrAccordingPoint(point).then(function(res){
_this.changeInfoWindowContent(res)
//打开信息窗体
_this.com.map.openInfoWindow(_this.com.infoWindow, point);
}); //绑定拖动结束事件,获取经纬度
marker.addEventListener("dragend", function(){
var curPoint = marker.getPosition();
console.log(curPoint)
//取得拖动后当前位置的名字
_this.getAddrAccordingPoint(curPoint).then(function(res){
_this.changeInfoWindowContent(res)
//打开信息窗体
_this.com.map.openInfoWindow(_this.com.infoWindow, curPoint);
});
});
marker.addEventListener("click", function(){
var curPoint = marker.getPosition();
_this.getAddrAccordingPoint(curPoint).then(function(res){
_this.changeInfoWindowContent(res)
//打开信息窗体
_this.com.map.openInfoWindow(_this.com.infoWindow, curPoint);
})
});
})
}, //默认打开地图的初始状态设置
default: function(){
var _this = this;
var point = new BMap.Point(114.062048, 22.54579);
// 设置初始化地图,设置中心点坐标和地图级别
_this.com.map.centerAndZoom(point, 12); //设置初次打开时,markerDefault,定位初始完毕会被销毁
var markerDefault = new BMap.Marker(point);
_this.com.map.addOverlay(markerDefault);
markerDefault.setIcon(_this.com.icon); //设置信息窗体宽度
_this.com.infoWindow.setWidth(220);
}, //獲取定位初始化地圖
initLocation: function (){
var _this = this;
return new Promise(function(resolve, reject){
new BMap.Geolocation().getCurrentPosition(function(r){
var lat = r.latitude;
var long = r.longitude;
var point = new BMap.Point(long, lat) var marker = new BMap.Marker(point);
marker.setOffset(_this.com.iconOffsetSize)
marker.setIcon(_this.com.icon);
marker.setAnimation(BMAP_ANIMATION_BOUNCE);
var initObj = {
pt: point,
mk: marker
} // 将标注添加到地图中
_this.com.map.addOverlay(marker); //允许拖动
marker.enableDragging();
//不允许被clearOverlays方法清除
marker.disableMassClear(); //地图指向当前的点(平移动画)
_this.com.map.panTo(point);
// 初始化地图,设置中心点坐标和地图级别
_this.com.map.centerAndZoom(point, 16); resolve(initObj);
})
})
}, //根据经纬度解析出位置的名称
getAddrAccordingPoint: function(point){
var _this = this;
return new Promise(function(resolve, reject){
new BMap.Geocoder().getLocation(point, function(result){
if (result){
if(!!result.surroundingPois[0]){
_this.com.chosedAddr = result.address + " " +result.surroundingPois[0].title;
}else{
_this.com.chosedAddr = result.address;
}
resolve(_this.com.chosedAddr)
}
});
})
}, //添加标注地址信息
changeInfoWindowContent: function(content){
var _this = this;
_this.com.infoWindow.setContent(content);
}
}; //开始地图
mapObj.init(); document.getElementById('chosedBtn').addEventListener('click', function(){
location.href = '<{:U("Channel/addChannelFollowLog")}>?address='+mapObj.com.chosedAddr
},false) })()
</script>

  

百度地图获取定位,实现拖动marker定位,返回具体的位置名的更多相关文章

  1. C#的百度地图开发(四)前端显示与定位

    原文:C#的百度地图开发(四)前端显示与定位 有了这些定位信息,那要如何在前端的页面上显示出来呢?这需要用到百度地图的JavaScript的API.下面是示例代码. 前端代码 <%@ Page  ...

  2. 百度地图API 显示区域边界及地名定位

    百度地图API 显示区域边界及地名定位 这个定位一共用了两个方法组成 一个是定位绘制区域边界线,另一个是地名定位 原理: 当用户输入省.市.县.区这种大地名时,我们要定位用户输入的这个位置,并显示轮廓 ...

  3. Xamarin.Android 使用百度地图获取定位信息

    最近做一个项目,web端使用百度地图,PDA使用手持机自带的GPS定位系统获取经纬度,然后再百度地图上显示该经纬度会有一定距离的差异,这里就像可乐的瓶子拧上雪碧的盖子,能拧的上却不美观.所以为了数据的 ...

  4. ionic基于GPS定位并通过百度地图获取定位详细信息

    相信所有的前端攻城狮都会碰到移动端App.里面获取用户定位信息. 那么问题来了,怎么获取用户的定位信息(经纬度)呢. 当然方法有很多,通过百度地图API 以及 高德地图 API都是可以的.但是两个获取 ...

  5. [android] 百度地图开发 (两).所在地的城市定位和城市POI搜索

    一个. 百度地图城市位置和POI搜索知识       上一篇文章"百度地图开发(一)"中讲述了怎样申请百度APIKey及解决显示空白网格的问题.该篇文章主要讲述怎样定位城市位置.定 ...

  6. Android Studio下加入百度地图的使用(二)——定位服务

    上一章(http://www.cnblogs.com/jerehedu/p/4891216.html)中我们已经完成了环境的搭建,这一章我们来研究一下如何使用. 第一步:在xml文件中加入以下权限 & ...

  7. 百度地图api之----根据用户ip定位城市

    LocalCity 这个类是利用用户IP地址去百度数据库里查询得到IP所在的城市,用法如下: var objCity = new BMap.LocalCity(); objCity.get(funct ...

  8. IOS百度地图获取所在的城市名称

    笔者的app要实现定位所在省和城市名称,借此总结巩固一下! @interface VenueListVC : BasePageTableViewVC<BMKLocationServiceDele ...

  9. vue 中结合百度地图获取当前城市

    首先需要去百度地图开发者平台申请 ak http://lbsyun.baidu.com/index.php?title=%E9%A6%96%E9%A1%B5 在index.html 中引入script ...

随机推荐

  1. bugku安卓First_Mobile wp

    1 打开题目,下载apk 2 将下载好的apk拖进android killer中,提示文件名过长,随便更改一下文件名即可 3 查看入口文件源码(点击android killer工具栏咖啡杯图标) 4  ...

  2. bat命令闪退问题

    今天执行一个bat命令,然而会出现问题:双击执行bat命令时,命令提示符界面会闪退. 然而该bat命令在他人电脑上可正常执行,而我会遇到这种问题. 以下是我尝试的方法: 首先尝试编辑bat命令,在ba ...

  3. 更简洁的log4j日志输出

    参考博客:https://blog.csdn.net/guoquanyou/article/details/5689652 只输出到文本,不输出到控制台 log4j.rootLogger=debug, ...

  4. visionpro和halcon这两款机器视觉软件区别

    很多朋友会问到visionpro和halcon这两款机器视觉软件,到底学哪个好呢,今天重码网就给大家讲一讲: 首先比较下两者的优缺点: halcon: 提供的图像算法要比Visionpro多,也就是说 ...

  5. Codeforces Round #565 (Div. 3)

    传送门 A. Divide it! •题意 给定一个数n, 每次可以进行下列一种操作 1.如果n可以被2整除,用n/2代替n 2.如果n可以被3整除,用2n/3代替n 3.如果n可以被5整除,用4n/ ...

  6. 第三章 jsp数据交互(二)

    Application:当前服务器(可以包含多个会话):当服务器启动后就会创建一个application对象,被所有用户共享page.request.session.application四个作用域对 ...

  7. Linux常用命令3

    useradd 添加用户账号 -n 制定uid标记号 -d 指定宿主目录,缺省默认为/home/用户名 -e 制定账号失效时间 -M 不为用户建立初始化宿主目录(通常作为不登陆账号) -s 指定用户的 ...

  8. 【JDK】JDK源码-Queue, Deque

    概述 Queue 和 Deque 都是接口.其中 Queue 接口定义的是一个队列,它包含队列的基本操作:入队(enqueue)和出队(dequeue). Deque 接口继承自 Queue 接口,表 ...

  9. 在 Windows 上使用 Python 进行 web 开发

    本文由葡萄城技术团队于原创并首发 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 上一篇我们介绍了在Windows 10下进行初学者入门开发Python的指 ...

  10. 技巧:结合Zabbix与SNMP监控嵌入式设备

    在如何利用Zabbix监控网络设备三篇文章的前两篇中,我们介绍了如何通过Zabbix代理监控网络设备.但有些设备无法安装Zabbix代理,需要采用其他方法监控.需要考虑无法安装软件的嵌入式设备或应用程 ...