高德地图使用——定位城市
前言:在使用Chrome进行开发时,发现该功能无法实现,即使高德地图官网也无法实现打开网页时定位当前城市,而是定位至北京。因为,高德实现定位城市是通过浏览器本身发起定位,但是Chrome在中国无法使用,最终导致定位失败(其他浏览器可以正常使用)。下文方法一在此结果上对开发过程进行总结。方法二,为实现功能需求,在页面添加 Input 手动搜索,根据结果进行定位。
方法一:自动定位城市
H5部分:
<el-dialog width="50%" :visible.sync="isShowMap" append-to-body class="mapDialog" @close="closeMap"><div class="mapwarp"><div id="map" class="map"></div></div></el-dialog>
JS部分:使用高德 Geolocation 组件
<script>import AMapLoader from "@amap/amap-jsapi-loader";export default {name: "",data(){return{long: '',lat: ''},methods:{//地图showMap() {this.initMap();},// // 获取用户经纬度信息getUserPosition(){return new Promise(resolve => {let position = []AMap.plugin('AMap.Geolocation', function() {var geolocation = new AMap.Geolocation({enableHighAccuracy: true, // 是否使用高精度定位,默认:true// timeout: 10000, // 设置定位超时时间,默认:无穷大})geolocation.getCurrentPosition(function(status,result){if(status === 'complete'){onComplete(result)}else{console.log(result)onError(result)}});function onComplete (data) { // 定位成功 data是具体的定位信息position = [data.position.KL, data.position.kT]resolve(position)}function onError (data) { // 定位出错}})// return position;});},//初始化地图initMap() {let that = thisAMapLoader.load({key: "", // 申请好的Web端开发者Key,首次调用 load 时必填version: "2.0", // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15plugins: ["Geolocation"], // 需要使用的的插件列表}).then( async (AMap) => {let arr = await that.getUserPosition()var map = new AMap.Map("map", {//设置地图容器idviewMode: "3D", //是否为3D地图模式zoom: 10, //初始化地图级别center: arr, //初始化地图中心点位置dragEnable: true, // 是否允许鼠标拖拽scrollWheel: true, // 鼠标滚轮放大缩小doubleClickZoom: true, // 双击放大缩小keyboardEnable: false, // 键盘控制发达缩小移动旋转touchZoom: false, // 手势控制});//设置点标记var marker = new AMap.Marker({icon:"//a.amap.com/jsapi_demos/static/demo-center/icons/poi-marker-default.png",position: arr,offset: new AMap.Pixel(-13, -30),});marker.setMap(map);//鼠标点击地图获得最新的点标记及经纬度坐标map.on("click", function (e) {marker._position[0] = e.lnglat.getLng();marker._position[1] = e.lnglat.getLat();marker.setMap(map);that.long = e.lnglat.getLng()that.lat = e.lnglat.getLat()});//修改经纬度坐标更新地图点标记}).catch((e) => {console.log(e);});},}}
</script>
报错总结:
1、定位请求被拒绝:定位请求无法通过浏览器安全校验,本地请求时使用 http://localhost 访问,使用ip访问不行;上线时,需要将HTTP访问换成HTTPS访问。
可能二:开放网页访问权限。
选择 “ 网站设置 ”
“位置信息” 设置 “允许”
2、访问失败:谷歌浏览器 中国区服务已停止(本身高德定位就有5%几率会失败)。访问成功,但是 geoocation.getCurrentPosition方法返回结果为空值。目前(本人),无解决方法。
方法二:添加对话框,手动搜索位置
H5部分:在原有基础上再添加一个输入框,用于输入目标城市。
<div class="mapwarp"><el-input id="input_id" v-model="mapInputValue" class="mapInput"></el-input><div id="map" class="map"></div></div>
JS部分:加载地图
利用 PlaceSearch/AutoComplete 组件获取输入项定位城市
Marker组件将定位城市标记
initMap(){//地图加载var that = thisAMapLoader.load({key: "", // 申请好的Web端开发者Key,首次调用 load 时必填version: "2.0", // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15plugins: ["AMap.Geolocation", "AMap.AutoComplete"], // 需要使用的的插件列表,如比例尺'AMap.Scale'等}).then( (AMap) => {var map = new AMap.Map("map", {resizeEnable: true,viewMode: "3D", //是否为3D地图模式zoom: 10, //初始化地图级别center: that.position, //初始化地图中心点位置dragEnable: true, // 是否允许鼠标拖拽scrollWheel: true, // 鼠标滚轮放大缩小doubleClickZoom: true, // 双击放大缩小keyboardEnable: false, // 键盘控制发达缩小移动旋转touchZoom: false, // 手势控制});//输入提示var autoOptions = {input: "input_id",// 输入框id};AMap.plugin(['AMap.PlaceSearch','AMap.AutoComplete'], function(){var auto = new AMap.AutoComplete(autoOptions);var placeSearch = new AMap.PlaceSearch({map: map,city: 'beijing', // 兴趣点城市citylimit: true, //是否强制限制在设置的城市内搜索pageSize: 10, // 单页显示结果条数children: 0, //不展示子节点数据pageIndex: 1, //页码extensions: 'base' //返回基本地址信息}); //构造地点查询类auto.on("select", select);//注册监听,当选中某条记录时会触发function select(e) { //关键字查询查询placeSearch.setCity(e.poi.adcode);placeSearch.search(e.poi.name,function (status,result) {console.log(result)// 获取中心点if (result.poiList.pois.length !== 0){var position = [result.poiList.pois[0].location.KL,result.poiList.pois[0].location.kT]that.position = position}});}});//设置点标记var marker = new AMap.Marker({icon: "//a.amap.com/jsapi_demos/static/demo-center/icons/poi-marker-default.png",position: that.position,offset: new AMap.Pixel(-13, -30), // 偏移量});marker.setMap(map);//鼠标点击地图获得最新的经纬度坐标map.on("click", function (e) {marker._position[0] = e.lnglat.getLng();marker._position[1] = e.lnglat.getLat();marker.setMap(map);that.addDeviceNodeForm.longitude = e.lnglat.getLng();that.addDeviceNodeForm.latitude = e.lnglat.getLat();// var arr = [that.addDeviceNodeForm.longitude,that.addDeviceNodeForm.latitude]// console.log(arr)});})},
高德地图使用——定位城市相关推荐
- Android 集成高德地图——当前定位,添加图标,画路线,设置显示中心位置,比例,地图刷新位置监听,判断GPS开启,去打开GPS
/*** 判断定位服务是否开启** @param* @return true 表示开启*/ public static boolean isLocationEnabled(Context contex ...
- 利用高德地图实现定位功能
最近学习使用高德地图可谓是出师不利....嘛,不知道为啥高德给的3d地图的jar包用不了,最后实在没办法用了2d的jar包,然后在大佬和其他资料的帮助下,实现了高德地图的定位功能.接下来就说一下具体的 ...
- 高德地图H5 定位失败报错 geolocation time out. Get ipLocation failed解决方案
高德地图H5 定位失败报错 geolocation time out. Get ipLocation failed的解决方法. 前言:此坑踩得我挺难受的,搞了三天 需求:进入页面,获取用户具体经纬度并 ...
- Android Studio之高德地图实现定位和3D地图显示
在应用开发中,地图开发是经常需要使用的"组件",国内比较出名的是就是百度地图和高德地图. 此博客讲的是高德地图实现定位和3D地图显示,并标注相应位置,话不多说,先看看效果,在上代码 ...
- android------之高德地图实现定位和3D地图显示
2019独角兽企业重金招聘Python工程师标准>>> 在应用开发中,地图开发是经常需要使用的"组件",国内比较出名的是就是百度地图和高德地图. 此博客讲的是高德 ...
- vue调用高德地图实现定位
vue调用高德地图实现定位 第一步创建高德地图key 第二步:下载vue-amap npm install vue-amap --save 第三步:在项目main.js引入vue-amap impor ...
- 高德地图某一城市地铁路线高亮解决方案
高德地图某一城市地铁路线高亮解决方案 项目刚好有一个需求,在地图上按需高亮全部或者某一条地铁线路.找了蛮久没找到什么好的解决方案(也可能是自己菜),那就只能自己投机取巧咯.不多说上代码. <!- ...
- 高德地图——浏览器定位+点击获取经纬度+去除高德百度地图左下角logo
高德地图--浏览器定位+点击获取经纬度+去除高德百度地图左下角logo 1.代码 <!doctype html> <html> <head><meta cha ...
- 高德地图的定位和大头针
最近没事研究了下高德地图的使用,简单的介绍下高德地图的定位和大头针功能,至于关键字检索POI等功能 ,可以去看完整的Demo: 使用高德地图 首先导入高德SDK,至于导入的具体方法,可以去看官网:ht ...
最新文章
- openFeign 服务接口的调用03—— OpenFeign 超时控制
- c++STL(标准模板库)理论基础
- Android 清除png图片的白色背景
- Nature:全球掠夺性期刊已超过15500种
- 2022春节档新片预售总票房达1.08亿
- PTA 1003 Emergency
- \n 屏幕换行 源码换行
- AjaxPro实现方法
- 免费的数据恢复软件 恢复丢失的数据
- 利用application在页面中显示访问次数
- 计算机字体对于现代设计有何意义,字体设计课程计算机授课方式的探索.doc
- vijos1942——小岛 Floyed
- 安卓辅助功能获取控件id
- C语言试题106之有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月 后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
- js实现Base64的加密解密
- linux中浏览器安装flash player
- 设计模式六大原则之里氏替换原则、依赖倒置原则详解
- 你的计算机运行的是盗本副本,电脑总是提示“您可能是软件盗版的受害者。 此计算机上安装的 Windows 产品密钥不是正版。”该怎么办呀?...
- yii2中发送手机号验证码
- C语言中字符串定义与文字常量区