微信开发如何利用经纬度获取位置_微信公众号开发 获取经纬度 - CSDN
  • 前段时间开发一个uniapp项目遇到了问题,在微信和企业微信没法调起获取地理位置的方法,uniapp官方方法uni.getLocation,但在pc和普通浏览器可以调起获取位置的提示,查了很多都不管用,没有考虑用微信的SDK,经过...

    uniapp项目在微信和企业微信浏览器获取经纬度

    uniapp项目在微信和企业微信浏览器获取经纬度

    前段时间开发一个uniapp项目遇到了问题,在微信和企业微信没法调起获取地理位置的方法,uniapp官方方法uni.getLocation,但在pc和普通浏览器可以调起获取地位置的提示,查了很多都不管用,没有考虑用微信的SDK,经过一下午的尝试,找到了一种解决方式。

    解决办法

    uniapp项目manifest.json配置文件

    manifest.json文件里配置腾讯地图的key

    再把 uni.getLocation 方法的 type 改成 gcj02 类型,就可以了

    			 // 获取位置
    			getLocation() {			
    				let that  = this;			
    				uni.showLoading({
    					title: '加载中'
    				});
    				// console.log("获取经纬度")
    					uni.getLocation({
    						type:'gcj02',
    						success: function (res) {
    							console.log('当前位置的经度:' + res.longitude);
    							console.log('当前位置的纬度:' + res.latitude);		
    						},
    						fail:function(res){					
    							uni.showToast({
    								title: '获取位置失败',
    								icon:'none',
    								duration: 2000
    							});
    					
    						}
    					});
    				
    				setTimeout(function () {
    				    uni.hideLoading();
    				}, 2000);			
    		
    			},
    
    展开全文
  • 之前搞微信二次开发遇见过一个超级大坑, 根据微信提供的接口, 获取到的经纬度, 不知道是什么坐标系的(ps: 各个地图使用的坐标系不一, 自行百度), 我把得到的经纬度放到百度.腾讯.高德地图里, 得到的位置都有很大的...

    之前搞微信二次开发遇见过一个超级大坑, 根据微信提供的接口, 获取到的经纬度, 不知道是什么坐标系的(ps: 各个地图使用的坐标系不一, 自行百度), 我把得到的经纬度放到百度.腾讯.高德地图里, 得到的位置都有很大的偏差, 后来绞尽脑汁, 发帖加群各种求助, 无意间发现一篇文章, 特此分享一下, 以防以后有人遇到同样的问题不用像我一样彷徨.

    这是原文 微信如何根据经纬度坐标查询具体地理位置

    微信获取到的经纬度是GPS坐标, 知道这个一切就好办了, 下一步只要要一个GPS坐标转换的接口就可以了.

    我一开始用的上面链接里的接口, 然而用的好好的有一天突然服务挂了, 最后发现他的接口403了.

    然后我就找到了下面这个不错的网站, 看他们的合作伙伴还有CSDN, 应该还算靠谱, 从我发现这个网站距今已经快三年了, 它还在, 所以…

    废话不多说, 上链接 各种地图接口

    展开全文
  • 微信小程序-获取当前城市位置经纬度,并解析位置信息 1, 获取当前地理位置,首先要拿到用户的授权wx.openSetting; 2,微信的getLocation接口,获取当前用户的地理位置微信返回的是经纬度,速度等参数); ...

    微信小程序-获取当前城市位置经纬度,并解析位置信息

     

    1, 获取当前地理位置,首先要拿到用户的授权wx.openSetting;

        2,微信的getLocation接口,获取当前用户的地理位置(微信返回的是经纬度,速度等参数);

        3,微信没有将经纬度直接转换为地理位置,借用腾讯位置服务中关于微信小程序的地理转换JS SDK 的API(返回信息中包括国家,省,市,区,经纬度等地理位置)

    步骤描述清楚以后,下面就开始按步骤操作了;(本文仅仅讲述如何获取用户地理位置的授权)

    图示为获取用户地理位置授权弹窗


    在用户首次进入某页面(需要地理位置授权)时候,在页面进行onLoad,onShow时候,进行调用wx.getLocation要求用户进行授权;以后每次进入该页面时,通过wx.getSetting接口,返回用户授权具体信息。

    wx.getSetting接口具体API地址链接为点击打开链接


    上图中scope.userLocation就是地理授权的标志;

    当该标志是underfind,表示用户初次进入该页面,当该标志是false,表示用户初次进入该页面拒绝了地理授权,应进行重新要求获取授权。
     

     

    wx.getSetting({
          success: (res) => {
            console.log(JSON.stringify(res))
            // res.authSetting['scope.userLocation'] == undefined    表示 初始化进入该页面
            // res.authSetting['scope.userLocation'] == false    表示 非初始化进入该页面,且未授权
            // res.authSetting['scope.userLocation'] == true    表示 地理位置授权
            if (res.authSetting['scope.userLocation'] != undefined && res.authSetting['scope.userLocation'] != true) {
              wx.showModal({
                title: '请求授权当前位置',
                content: '需要获取您的地理位置,请确认授权',
                success: function (res) {
                  if (res.cancel) {
                    wx.showToast({
                      title: '拒绝授权',
                      icon: 'none',
                      duration: 1000
                    })
                  } else if (res.confirm) {
                    wx.openSetting({
                      success: function (dataAu) {
                        if (dataAu.authSetting["scope.userLocation"] == true) {
                          wx.showToast({
                            title: '授权成功',
                            icon: 'success',
                            duration: 1000
                          })
                          //再次授权,调用wx.getLocation的API
                          
                        } else {
                          wx.showToast({
                            title: '授权失败',
                            icon: 'none',
                            duration: 1000
                          })
                        }
                      }
                    })
                  }
                }
              })
            } else if (res.authSetting['scope.userLocation'] == undefined) {
              //调用wx.getLocation的API
            }
            else {
              //调用wx.getLocation的API
            }
          }
        })
    

     

    在拿到用户授权以后,使用微信的API获取当前位置的经纬度微信获取位置API

    这里,我们进行使用的是腾讯位置服务;专为小程序开发者提供LBS数据服务工具包,可以在小程序中调用腾讯位置服务的POI检索、关键词输入提示、地址解析、逆地址解析、行政区划和距离计算等数据。
        1,得到开发者秘钥

        2,下载微信小程序javaScriptSDK,

        3,安全域名设置,在“设置” -> “开发设置”中设置request合法域名,添加http://api.map.qq.com

    在文件中引入对应的javaScriptSDK文件
     

        var QQMapWX = require('../../../utils/qqmap-wx-jssdk.js');
        var qqmapsdk;

     在文件中进行js调用,

    最后的结果就是可以获得自己所在城市的具体位置了 

     

     

    index.js部分的代码 

    //index.js
    //获取应用实例
    const app = getApp();
    var QQMapWX = require('../../../utils/qqmap-wx-jssdk.js');
    var qqmapsdk;
    Page({
      data: {
        province: '',
        city: '',
        latitude: '',
        longitude: ''
      },
      onLoad: function () {
        qqmapsdk = new QQMapWX({
          key: 'XXXX-XXXX-XXXX-XXXX' //这里自己的key秘钥进行填充
        });
      },
      onShow: function () {
        let vm = this;
        vm.getUserLocation();
      },
      getUserLocation: function () {
        let vm = this;
        wx.getSetting({
          success: (res) => {
            console.log(JSON.stringify(res))
            // res.authSetting['scope.userLocation'] == undefined    表示 初始化进入该页面
            // res.authSetting['scope.userLocation'] == false    表示 非初始化进入该页面,且未授权
            // res.authSetting['scope.userLocation'] == true    表示 地理位置授权
            if (res.authSetting['scope.userLocation'] != undefined && res.authSetting['scope.userLocation'] != true) {
              wx.showModal({
                title: '请求授权当前位置',
                content: '需要获取您的地理位置,请确认授权',
                success: function (res) {
                  if (res.cancel) {
                    wx.showToast({
                      title: '拒绝授权',
                      icon: 'none',
                      duration: 1000
                    })
                  } else if (res.confirm) {
                    wx.openSetting({
                      success: function (dataAu) {
                        if (dataAu.authSetting["scope.userLocation"] == true) {
                          wx.showToast({
                            title: '授权成功',
                            icon: 'success',
                            duration: 1000
                          })
                          //再次授权,调用wx.getLocation的API
                          vm.getLocation();
                        } else {
                          wx.showToast({
                            title: '授权失败',
                            icon: 'none',
                            duration: 1000
                          })
                        }
                      }
                    })
                  }
                }
              })
            } else if (res.authSetting['scope.userLocation'] == undefined) {
              //调用wx.getLocation的API
              vm.getLocation();
            }
            else {
              //调用wx.getLocation的API
              vm.getLocation();
            }
          }
        })
      },
      // 微信获得经纬度
      getLocation: function () {
        let vm = this;
        wx.getLocation({
          type: 'wgs84',
          success: function (res) {
            console.log(JSON.stringify(res))
            var latitude = res.latitude
            var longitude = res.longitude
            var speed = res.speed
            var accuracy = res.accuracy;
            vm.getLocal(latitude, longitude)
          },
          fail: function (res) {
            console.log('fail' + JSON.stringify(res))
          }
        })
      },
      // 获取当前地理位置
      getLocal: function (latitude, longitude) {
        let vm = this;
        qqmapsdk.reverseGeocoder({
          location: {
            latitude: latitude,
            longitude: longitude
          },
          success: function (res) {
            console.log(JSON.stringify(res));
            let province = res.result.ad_info.province
            let city = res.result.ad_info.city
            vm.setData({
              province: province,
              city: city,
              latitude: latitude,
              longitude: longitude
            })
     
          },
          fail: function (res) {
            console.log(res);
          },
          complete: function (res) {
            // console.log(res);
          }
        });
      }
    })
    

    页面展示部分的代码

    <!--index.wxml-->
    <view class="retailStore">
       <view class="cnaps  borderBottom">
        <text>所在城市</text>
        <input class='m-bbt' placeholder-class='plhStyle' type='number' maxlength='50' placeholder='' bindinput="bindKeyInput" value='{{province}} {{city}}' disabled></input>
      </view>
    </view>
     
    
    

     

     

    展开全文
  • 公共方法:yii2框架 static public function getDistanceAjax(array $parems) {  $result = ['success' =&gt; false];  $lat = $parems['lat'];  $lon = $parems['lon'];... $address = $parems...

    公共方法:yii2框架

    static public function getDistanceAjax(array $parems) {
            $result = ['success' => false];
            $lat = $parems['lat'];
            $lon = $parems['lon'];
            $address = $parems['address'];
            $data = json_decode(file_get_contents('https://apis.map.qq.com/ws/geocoder/v1/?address='.$address.'&key=XE3BZ-LH6KU-X7TV4-2LCGL-OU6VK-EUFVG'));
            if ($data->status == 0) {
                $from = $lat . ',' . $lon;
                $to = $data->result->location->lat . ',' . $data->result->location->lng;
                $Distance = self::getDistance($from, $to);
                if ($Distance['success'] == true) {
                    $result['success'] = true;
                    $result['data'] = $Distance['data'];
                } else {
                    $result['msg'] = $Distance['msg'];
                }
            } else {
                $result['msg'] = '获取失败';
            }
            return $result;
        }

    外部控制器调用该方法即可,

    展开全文
  • 欢迎关注微信服务号:小灰熊 package com.lwz.wx.util; //需要导入的包 在网上都是比较容易找到的 import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.util.List; ...
  • 微信小程序中map地图使用——实现获取用户当前位置经纬度,在地图上产看位置,通过地图获取不同位置经纬度。 (前提是要弄懂结构及其相关接口) 登录开发工具(包括appid) 微信小程序主体部分:  ...
  • 其实获取微信经纬度,很简单根据我前面的第一篇可以了解到进入要获取微信经纬度的页面时,我们只要先页面授权得到签名就可以了! 这里得到签名的方法网上很多,也可以看我的第一篇文档,直接复制就可以用了! 代码:...
  • 微信公众平台安全域名设置: 设置->开发设置->request合法域名 添加:https://apis.map.qq.com 腾讯位置服务: 申请腾讯地图密钥(key) var QQMapWX = require('../../utils/qqmap-wx-jssdk.js'); //引入...
  • 微信小程序之获取当前地理位置及通过地理位置获取经纬度一、准备工作二、获取当前地理位置三、通过地址获取经纬度收工 一、准备工作 1.获取appId和Secret : 开发=&amp;amp;amp;gt;开发设置 2.获取腾讯位置服务...
  • 用的是腾讯地图引入js文件 &lt;script charset="utf-8" src="https://map.qq.com/api/js?v=2.exp&amp;key=您申请的秘钥"&gt;&lt;/script&...text/javasc
  • 调用微信的jssdk需要先绑定js安全域名,这个在微信公众号后台自己设置就可以了。 还需要引入js文件,但由于我使用了vux,它里面的WeChatPlugin这个插件可以直接用commonJS方式引用,不需要再引用jsw文件,所以我...
  • 微信小程序的开发过程中,很可能会碰到和地理位置相关的一些操作,比如:根据经纬度计算两地之间的距离,根据关键字获取附近相关的地理信息,关键词输入提示等。 如果直接自己写代码来解决相关的问题,一方面会大大...
  • 最近一直在做公众号开发,这两天公司让我做一个类似钉钉打卡的功能,这时候我需要获取到用户的经纬度, 但是在这之前我只知道在关注微信公众号的时候获取用户地理位置:...
  • 我是通过腾讯地图逆地址解析,通过经纬度获取详细的位置信息数据。 第一步:申请腾讯地图密钥(key),申请地址:申请密钥 填写完成后即可获取到对应的key值。 第二步:通过小程序官方API获取用户当前位置...
  • 微信小程序正常通过getLocation只能获取到当前用户的经纬度信息,想要获取详细信息需要通过微信小程序JavaScript SDK反编译获取详细地址 准备条件: 1配置腾讯地图秘钥,并且开启webserviceAPI服务,不要往白名单...
  • 微信小程序 定位 获取经纬度城市街道等位置信息 请先看微信小程序关于定位的API:https://mp.weixin.qq.com/debug/wxadoc/dev/api/location.html#wxgetlocationobject 可以看到:小程序只提供了一个获取地理位置、...
  • 这里主要写的是获取当前用户的地理位置,调用微信接口,成功之后会返回经纬度,这里我们把它转化成了省市县方便调用 主逻辑函数 // 这个要在<head>里面引入 <script src=...
  • 以前做火车, 每到一个城市, ...微信公众号可以让用户发送他的地下位置给公众号。 这样你就可以获取到用户的经度和纬度, 进一步可以知道用户所在城市。 使用这一功能,
  • 啦啦啦,踩了半天坑,终于成功了,总结一下 ...第一步:先封装一个类(本人用的TP5,阅读者参考类里面的类容即可) <?...namespace app\shangjia\controller; use app\common\controller\Base;...class JSSDK extends Base...
  • 获取签名工具类(httpclient和sha1加密) package com.luo.util; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.security....
1 2 3 4 5 ... 20
收藏数 2,525
精华内容 1,010
关键字:

微信开发如何利用经纬度获取位置