关于 Vue Baidu Map 自动定位

vue 中自动定位

 <template>
        <baidu-map class="map" :zoom="zoom" :center="center" @ready="handler">
          <bm-geolocation
            anchor="BMAP_ANCHOR_BOTTOM_RIGHT"
            :showAddressBar="true"
            :autoLocation="true"
          ></bm-geolocation>
        </baidu-map>
      </template>

//js代码//--------------------------------------//
 data() {
    return {
      center: { lng: 0, lat: 0 },
      zoom:15//必须写上,自己因为忘记写一直无法自动定位
    };
  },

 /*-------------------------地图插件准备好后触发事件---------------------------------------*/
handler({ BMap, map }) {
      const that = this;
      var geolocation = new BMap.Geolocation();
      geolocation.getCurrentPosition(function(r) {
        if (this.getStatus() == BMAP_STATUS_SUCCESS) {
          that.center.lng = r.longitude;
          that.center.lat = r.latitude;
          console.log(that.center);
        } else {
          alert("failed" + this.getStatus());
        }
      });
    }

获取用户详细地址

<script type="text/javascript">
    var map = new BMap.Map("allmap");//创建Map实例,注意页面中一定要有个id为allmp的div
    var point = new BMap.Point(116.331398,39.897445);//创建定坐标
    map.centerAndZoom(point,12);//// 初始化地图,设置中心点坐标和地图级别

    var geolocation = new BMap.Geolocation();
    var gc = new BMap.Geocoder();//创建地理编码器
    // 开启SDK辅助定位
    geolocation.enableSDKLocation();
    geolocation.getCurrentPosition(function(r){
        if(this.getStatus() == BMAP_STATUS_SUCCESS){
            var mk = new BMap.Marker(r.point);
            map.addOverlay(mk);
            map.panTo(r.point);
            alert('您的位置:' + r.point.lng + ',' + r.point.lat);

            var pt = r.point;
            map.panTo(pt);//移动地图中心点
            //alert(r.point.lng);//X轴
            //alert(r.point.lat);//Y轴 

            gc.getLocation(pt, function(rs){
                var addComp = rs.addressComponents;
                //alert(addComp.city);
               alert(addComp.province + addComp.city + addComp.district + addComp.street + addComp.streetNumber);
            });  

        }
        else {
            alert('failed'+this.getStatus());
        }
    });
</script>

四、通过浏览器定位获取当前经纬度:
<script type="text/javascript">
var map = new BMap.Map("allmap");
var point = new BMap.Point(116.331398,39.897445);
map.centerAndZoom(point,12);

var geolocation = new BMap.Geolocation();
geolocation.getCurrentPosition(function(r){
    if(this.getStatus() == BMAP_STATUS_SUCCESS){
        var mk = new BMap.Marker(r.point);
        map.addOverlay(mk);
        map.panTo(r.point);
        alert('您的位置:'+r.point.lng+','+r.point.lat);
    }
    else {
        alert('failed'+this.getStatus());
    }
});
</script>

五、ip定位获取当前所在城市
<script type="text/javasript">
var map = new BMap.Map("allmap");
var point = new BMap.Point(116.331398,39.897445);
map.centerAndZoom(point,12);

function myFun(result){
    var cityName = result.name;
    map.setCenter(cityName);
    alert("当前定位城市:"+cityName);
}
var myCity = new BMap.LocalCity();
myCity.get(myFun);
</script>

原文地址:https://www.cnblogs.com/shiazhen/p/12167962.html

时间: 2024-08-03 23:20:31

关于 Vue Baidu Map 自动定位的相关文章

vue baidu map之获取选中点的经纬度

需求:在vue项目中通过点击按钮,弹出百度地图的弹框,用户选择地图上的点或者通过搜索关键字选点,点击确认 关闭弹窗 得到经纬度 效果: vue baidu map api链接 : https://dafrok.github.io/vue-baidu-map/#/zh/index 使用之前需要先申请百度服务密钥 由于要多次用到地图选点,故封装成一个简单的组件,在需要的地方进行引入,弹窗用的是iview的modal,本例中用的是局部引入vue baidu map 在需要的地方引入组件 eg: <ma

[Baidu Map]添加全景地图

关键代码: /* 为地图添加全景 @map BMap.Map @divid 全景地图承载div @ylng,xlat 全景地图初始化经纬度 eg:panorama = addPanorama(map, 'panorama', ylng, xlat); */ function addPanorama(map, divid, ylng, xlat) { var panorama = new BMap.Panorama(divid); //全景图展示 panorama.setPosition(new

Android 百度地图开发之一(Hello BaiDu Map)

之前也接触过百度地图的开发,但那是在网上找的案例或代码,而且是比较老的版本.打算重新学习一下百度地图的开发. 本次使用的百度地图的版本是 Android SDK v3.0.0 本篇文章主要讲述百度地图开发的准备和地图的成功显示即可. 首先建议大家先申请注册一个百度账号. 申请密钥(要想实现百度地图的相关服务必须申请密钥),网址:http://lbsyun.baidu.com/apiconsole/key 需要注意的是:应用名称不要重复或无效,安全码的输入详情请查看:http://develope

baidu map develop

百度地图 前端时间,因项目需要加入了谷歌地图,但是由于谷歌换了接口,对谷歌地图市区耐心了,还是使用国产的百度吧,先走起来. 如果你有百度账号,那就可以搜索百度地图开发者中心,去申请密钥(ak),然后就可以使用了,先来个hello world吧. <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8&

Android DEV : Show a window on Baidu Map

      周末同学说想弄个基于Baidu地图的应用来, 于是就开始研究这个SDK来. 其中应用有个需求, 需要点击地图上的标记时, 显示一组按钮. 于是按照常规的作法失业了InfoWindow, 如下. //panel is a view, some buttons in it. final InfoWindow iw = new InfoWindow(panel, marker.getPosition(), null); //getMap() return BaiduMap activity

提高Baidu Map聚合的效率

百度的MAP的例子里提供了一个聚合效果,地址是http://developer.baidu.com/map/jsdemo.htm#c1_4 ,效果图如下图: 这个效果很赞,但效率很低,当数据量达到5000的时候就难以忍受了,加载和地图缩放都很卡,用户体验很差劲.官方提供的MarkerClusterer.js 文件是这样的: /** * @fileoverview MarkerClusterer标记聚合器用来解决加载大量点要素到地图上产生覆盖现象的问题,并提高性能. * 主入口类是<a href=

[Baidu Map]在WebBrowser下InfoWindow显示变形问题

在项目开发中,因为是C/S原因,要展示百度地图,只能内嵌WebBrowser来实现,遇到的问题是当点击Marker标记展示其对应的InfoWindow的时候,在WebBrowser内第一次点击时候能够很好展示,而当再在此点击的时候InfoWindow就会很糟糕,变形: 如图: 搜索一番也未找到原因,已经发邮件给百度地图邮箱咨询也暂未得到答复,是不是Bug就不得而知: 后面投机取巧的发现强制设置InfoWindow的宽度能够解决问题,代码如下: /* *说明:为Marker标记当点击的时候,弹出提

[BaiDu Map]使用小计

最近从谷歌地图转移到百度地图,关于其中操作代码备记下,其中包括关于MarkerManager使用,代码基于API 2.0: var allMarkers = []; var map = null; var mgr = null; var infoWindow; /* baidumap初始化 *xlat,ylng 经纬度 *zoom 缩放级别 *gdiv 承载div */ function setupMap(xlat, ylng, zoom, gdiv) { map = new BMap.Map(

[Baidu Map]MarkerManager扩展

关键代码: /// <reference path="MarkerManager.js" /> BMapLib.MarkerManager.prototype.count = function () { /// <summary> /// 获取MarkerManager管理标记数量 /// </summary> /// <returns type="">管理标记数量</returns> return thi