Ionic3 高德定位

高德提供了Web平台定位的JS API,同样需要用到 APP_Key,并且需要注意是使用Web端的Key,如下图所示。必须是Web端的,其它平台的无效。
http://lbs.amap.com/dev/key/app
http://lbs.amap.com/api/javascript-api/example/geocoder/regeocoding

使用方法

在 index.html 中引入以下脚本,注意版本是 1.4.1, 这个版本和其它版本在使用上有区别

  <script type="text/javascript" src="http://webapi.amap.com/maps?v=1.4.1&key=你的key"></script>

在对应的ts 文件中 写以下代码测试

///在文件中全局声明 AMap
declare let AMap ;

  goLocation() {
    let that = this;
    let mapObj = new AMap.Map('iCenter');
    mapObj.plugin('AMap.Geolocation', function () {
      let geolocation = new AMap.Geolocation({
        enableHighAccuracy: true,//是否使用高精度定位,默认:true
        timeout: 10000,          //超过10秒后停止定位,默认:无穷大
        maximumAge: 0,           //定位结果缓存0毫秒,默认:0
        convert: true,           //自动偏移坐标,偏移后的坐标为高德坐标,默认:true
        showButton: true,        //显示定位按钮,默认:true
        buttonPosition: 'LB',    //定位按钮停靠位置,默认:'LB',左下角
        buttonOffset: new AMap.Pixel(10, 20),//定位按钮与设置的停靠位置的偏移量,默认:Pixel(10, 20)
        showMarker: true,        //定位成功后在定位到的位置显示点标记,默认:true
        showCircle: true,        //定位成功后用圆圈表示定位精度范围,默认:true
        panToLocation: true,     //定位成功后将定位到的位置作为地图中心点,默认:true
        zoomToAccuracy:true      //定位成功后调整地图视野范围使定位位置及精度范围视野内可见,默认:false
      });
      mapObj.addControl(geolocation);
      geolocation.getCurrentPosition();
      AMap.event.addListener(geolocation, 'complete', that.onComplete.bind(that));//返回定位信息
      AMap.event.addListener(geolocation, 'error', (data)=>{ console.log('定位失败' + data);});      //返回定位出错信息
    });
  }

  //解析定位结果
  onComplete(data) {
    console.log(data);
    console.log(data.position.toString());
    console.log(data.formattedAddress);
    var str=['定位成功'];
    str.push('经度:' + data.position.getLng());
    str.push('纬度:' + data.position.getLat());
    if(data.accuracy){
      str.push('精度:' + data.accuracy + ' 米');
    }//如为IP精确定位结果则没有精度信息
    str.push('是否经过偏移:' + (data.isConverted ? '是' : '否'));
    // document.getElementById('tip').innerHTML = str.join('<br>');
  }

goLocation() 是测试函数,当点击某个按钮的时候,调用这个函数。

对应的 html代码很简单,就一个测试按钮

<button (click)="goLocation()">定位</button>

测试结果


以上是在 浏览器上测试的结果,如果是Ionic应用,在连接wifi的情况下,也可以进行定位,但是在不开wifi的情况下,无法定位。要想在android或者ios上实现定位,要借助大神写的cordova插件

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,242评论 19 139
  • 看着那些金属质感,是不是很有感觉?烙铁效果可以应用在海报上,某个酷炫的专题上,比如战争类的、游戏类的等等,今天就教...
    茂趣创意阅读 800评论 0 15
  • 小王子在沙漠里和狐狸告别的时候,狐狸告诉小王子一个秘密:“真正重要的东西, 用眼睛是看不见的。” 就像那条把一个人...
    饭花阅读 1,312评论 0 0
  • 杜留哥哥牵着杜小胖的手,走进两栖宫,宫殿非常阔大,地面的板砖都是红色的。这地砖有中央空调,可以自动调温。 “杜留哥...
    一指天空阅读 404评论 1 2
  • 嘿,亲爱的朋友,如果你正好有空,和我来盘《狼人杀》吧!我不是那种资深高玩,我更愿意给自己定位是一根“搅屎棍”。虽然...
    疯疯风雅颂阅读 575评论 0 1