微信小程序如何获取地理位置和进行地图导航

一.获取地理位置 由于小程序只提供了我们一个获取地理位置、速度的api,并没有获取的相关地位位置的信息等,我们利用百度地图的api来获取地位位置。

文档

1.申请ak http://lbsyun.baidu.com/index.php?title=wxjsapi/guide/key

2.下载百度地图的api ,链接:http://download.csdn.net/detail/michael_ouyang/9754015 解压后,里面有2个js文件,一个是常规没压缩的,另一个是压缩过的 PS:由于小程序项目文件大小限制为1M,建议使用压缩版的js文件!

用5kb那个js

3.引入JS模块

放在utils下

4.在所需的js文件内导入js // 引用百度地图,注意:require传入一个相对路径 var bmap = require('../../utils/bmap-wx/bmap-wx.js');

5.编辑代码 .wxss代码为

<view>  
    <viwe>经度:{{longitude}}</viwe>  
    <view>纬度:{{latitude}}</view>  
    <view>地址:{{address}}</view>  
    <view>城市:{{cityInfo.city}}</view>  
</view>  

.js代码为:

var bmap = requir('../../utils/bmap-wx/bmap-wx.min.js');
var wxMarkerData = [];  //定位成功回调对象  
Page({
  data: {
    ak: "FHG7utZtdyXN2", //填写申请到的ak  
    markers: [],
    longitude: '',   //经度  
    latitude: '',    //纬度  
    address: '',     //地址  
    cityInfo: {}     //城市信息  
  },
  onLoad: function (options) {
    var that = this;
    /* 获取定位地理位置 */
    // 新建bmap对象   
    var BMap = new bmap.BMapWX({
      ak: that.data.ak
    });
    var fail = function (data) {
      console.log(data);
    };
    var success = function (data) {
      //返回数据内,已经包含经纬度  
      console.log(data);
      //使用wxMarkerData获取数据  
      wxMarkerData = data.wxMarkerData;
      //把所有数据放在初始化data内  
      that.setData({
        markers: wxMarkerData,
        latitude: wxMarkerData[0].latitude,
        longitude: wxMarkerData[0].longitude,
        address: wxMarkerData[0].address,
        cityInfo: data.originalData.result.addressComponent
      });
    }
    // 发起regeocoding检索请求   
    BMap.regeocoding({
      fail: fail,
      success: success
    });
  }

})  

6.运行 注意:楼主的运行环境在模拟器上,在模拟器所获取到的定位是有一些误差的,如需测试真正的地理位置信息,还需要使用真机测试!!!

结果

二.进行地图导航

微信小程序里面是不能导航的,原因是小程序的代码最多只能有1M,他的运行内存只能有10M,一个区域地图下载下来就不止1M了所以在应用内我们无法做到导航的,但是应用外呢!

关于APP开发,一般如果导航这个功能不是很重要的话就会放到应用外来做这个功能,但是高德地图和腾讯地图都会有响应的SDK,可是小程序不同,我们该如何在小程序外调用导航功能呢?

打开小程序中关于位置的API, 1.wx.getLocation(OBJECT) 获取当前的地理位置、速度。 2.wx.chooseLocation(OBJECT) 打开地图选择位置。 3.wx.openLocation(OBJECT) ​使用微信内置地图查看位置。

查看长沙理工大学

具体实现代码为:

wx.getLocation({
  type: 'gcj02', //返回可以用于wx.openLocation的经纬度
  success: function(res) {
    var latitude = res.latitude
    var longitude = res.longitude
    wx.openLocation({
      latitude: latitude,
      longitude: longitude,
      name:"长沙理工大学",
     scale: 28
    })
  }
})

点击绿点出现如图:

选择地图

选择手机上的地图,然后就跳到了对应的地图APP上,实现了应用外调用导航功能。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏腾讯移动品质中心TMQ的专栏

如何从海量用户中轻松定位H5视频播放器问题?

一、方案背景介绍 随着互联网技术的发展,用户使用QQ浏览器进行上网观看视频越来越多,最近统计目前使用QQ浏览器观看视频已经过亿。不同的用户由于不同的场景下播放...

2708
来自专栏DeveWork

WordPress免插件仅代码实现文章归档模板 II

不多说了,本站目前使用的效果,可以到我的存档页一览,该方法来自zww,感谢原作者,在这之前,建议你: 1、你的博客存档页面地址后面的应该为/articles,而...

4988
来自专栏ytkah

如何用腾讯电脑管家备份微信聊天记录

  微信发布了5.2.1版本更新,其中一个很人性化的功能是支持腾讯电脑管家备份微信聊天记录到电脑上,可将语音、文字、图片、视频等聊天记录快速加密备份到本地电脑中...

4085
来自专栏疯狂的小程序

无痛的微信小程序开发体验

在小程序之初便开发应用了,现在小程序的开发也越来越成熟了,完善了很多的API、组件、架构等,社区也由原来的零星点点到现在的不大不小,但也算是有了,期间也诞生了很...

3805
来自专栏编程微刊

js仿通知栏新消息实时推送更新效果

在最近的项目里面,用到websocket做消息推送,其中有这样的一个效果,在消息列表的模块,接收到很多条信息,展示在界面的是最近的十条接受到的消息,实时更新模块...

2033
来自专栏小文博客

Git:一款比付费主题更像是付费主题的WordPress免费主题

1802
来自专栏Python爬虫与算法进阶

App爬虫思路

但是我觉得不够全,首先对于一般的HTTP和HTTPS协议,通过最基本的Fiddler和Charles就可以抓包,具体方法请Google。需要保证两点:App走代...

3892
来自专栏java一日一条

前端优化带来的思考,浅谈前端工程化

这段时间对项目做了一次整体的优化,全站有了20%左右的提升(本来载入速度已经1.2S左右了,优化度很低),算一算已经做了四轮的全站性能优化了,回顾几次的优化手段...

963
来自专栏小文博客

查看WordPress站点主题的方法

4342
来自专栏编程微刊

【干货】前端开发者最常用的六款IDE

3985

扫码关注云+社区