前言:在使用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)});})},

高德地图使用——定位城市相关推荐

  1. Android 集成高德地图——当前定位,添加图标,画路线,设置显示中心位置,比例,地图刷新位置监听,判断GPS开启,去打开GPS

    /*** 判断定位服务是否开启** @param* @return true 表示开启*/ public static boolean isLocationEnabled(Context contex ...

  2. 利用高德地图实现定位功能

    最近学习使用高德地图可谓是出师不利....嘛,不知道为啥高德给的3d地图的jar包用不了,最后实在没办法用了2d的jar包,然后在大佬和其他资料的帮助下,实现了高德地图的定位功能.接下来就说一下具体的 ...

  3. 高德地图H5 定位失败报错 geolocation time out. Get ipLocation failed解决方案

    高德地图H5 定位失败报错 geolocation time out. Get ipLocation failed的解决方法. 前言:此坑踩得我挺难受的,搞了三天 需求:进入页面,获取用户具体经纬度并 ...

  4. Android Studio之高德地图实现定位和3D地图显示

    在应用开发中,地图开发是经常需要使用的"组件",国内比较出名的是就是百度地图和高德地图. 此博客讲的是高德地图实现定位和3D地图显示,并标注相应位置,话不多说,先看看效果,在上代码 ...

  5. android------之高德地图实现定位和3D地图显示

    2019独角兽企业重金招聘Python工程师标准>>> 在应用开发中,地图开发是经常需要使用的"组件",国内比较出名的是就是百度地图和高德地图. 此博客讲的是高德 ...

  6. vue调用高德地图实现定位

    vue调用高德地图实现定位 第一步创建高德地图key 第二步:下载vue-amap npm install vue-amap --save 第三步:在项目main.js引入vue-amap impor ...

  7. 高德地图某一城市地铁路线高亮解决方案

    高德地图某一城市地铁路线高亮解决方案 项目刚好有一个需求,在地图上按需高亮全部或者某一条地铁线路.找了蛮久没找到什么好的解决方案(也可能是自己菜),那就只能自己投机取巧咯.不多说上代码. <!- ...

  8. 高德地图——浏览器定位+点击获取经纬度+去除高德百度地图左下角logo

    高德地图--浏览器定位+点击获取经纬度+去除高德百度地图左下角logo 1.代码 <!doctype html> <html> <head><meta cha ...

  9. 高德地图的定位和大头针

    最近没事研究了下高德地图的使用,简单的介绍下高德地图的定位和大头针功能,至于关键字检索POI等功能 ,可以去看完整的Demo: 使用高德地图 首先导入高德SDK,至于导入的具体方法,可以去看官网:ht ...

最新文章

  1. openFeign 服务接口的调用03—— OpenFeign 超时控制
  2. c++STL(标准模板库)理论基础
  3. Android 清除png图片的白色背景
  4. Nature:全球掠夺性期刊已超过15500种
  5. 2022春节档新片预售总票房达1.08亿
  6. PTA 1003 Emergency
  7. \n 屏幕换行 源码换行
  8. AjaxPro实现方法
  9. 免费的数据恢复软件 恢复丢失的数据
  10. 利用application在页面中显示访问次数
  11. 计算机字体对于现代设计有何意义,字体设计课程计算机授课方式的探索.doc
  12. vijos1942——小岛 Floyed
  13. 安卓辅助功能获取控件id
  14. C语言试题106之有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月 后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
  15. js实现Base64的加密解密
  16. linux中浏览器安装flash player
  17. 设计模式六大原则之里氏替换原则、依赖倒置原则详解
  18. 你的计算机运行的是盗本副本,电脑总是提示“您可能是软件盗版的受害者。 此计算机上安装的 Windows 产品密钥不是正版。”该怎么办呀?...
  19. yii2中发送手机号验证码
  20. C语言中字符串定义与文字常量区

热门文章

  1. IDEA 导出war包 方法
  2. idea 导出 war包
  3. 分享166个HTML医疗保健模板,总有一款适合您
  4. 自制炒股盯盘神器——python实现(4)
  5. koala scss/less 软件报错
  6. ovs 删除openflow流表
  7. 中国富人真实现状:最爱开奥迪 用MSN多于QQ
  8. html使页面崩溃,HTML5新特性Bug:这12行代码分分钟让你浏览器崩溃iPhone重启
  9. Steam客户端更新:Linux增加2倍缩放模式,支持Windows 10的HiDPI
  10. 最容易理解的反射机制的底层原理