微信小程序____獲取定位信息

引言


本文想要實現(xiàn)的功能:微信小程序中獲取定位信息俐芯,如所在小區(qū)信息掀宋。

實現(xiàn)


index.wxml

  <view class='location' bindtap='searchAddress'>
    <image class="location_icon" src="../../images/locate.png"></image>
    <text class='location_address'>{{community}}</text>
    <image class="location_icon_more" src="../../images/more.png"></image>
  </view>
實現(xiàn)效果

index.wxss

.location{
  height: 55.556rpx;
  margin-bottom: 10rpx;
  display: flex;
  align-items: center;
}

.location_icon{
  width: 35rpx;
  height: 35rpx;
}

.location_icon_more{
  width: 30rpx;
  height: 30rpx;
}

.location_address{
  font-size: 18px;
}

index.js

//index.js
//獲取應用實例
const app = getApp()

Page({
  data: {
    community: ''
  },

  onLoad: function() {
    this.loadInfo();
  },

  loadInfo: function() {
    var page = this
    wx.getSetting({
      success: res => {
        console.info("獲取用戶信息 getSetting 回調(diào)結果:")
        // 可以通過 wx.getSetting 先查詢一下用戶是否授權了 "scope.userLocation" 這個 scope
        if (!res.authSetting['scope.userLocation']) {
          console.info("scope.userLocation")
          wx.authorize({
            scope: 'scope.userLocation',
            success() {
              // 用戶已經(jīng)同意小程序使用地理位置功能营密,后續(xù)調(diào)用 wx.getLocation接口不會彈窗詢問
              console.info("index.js 授權地理位置成功")
              var i = setInterval(function() {
                wx.getLocation({
                  type: 'gcj02', // 默認為 wgs84 返回 gps 坐標痴奏,gcj02 返回可用于 wx.openLocation 的坐標  
                  success: function(res) {
                    // success  
                    var longitude = res.longitude
                    var latitude = res.latitude
                    page.loadCity(longitude, latitude)
                    clearInterval(i)
                  },
                  fail: function() {
                    // fail  
                    console.info("loadInfo fail")
                    wx.showToast({
                      title: '手機定位未打開',
                      icon: 'warn',
                      duration: 2000 //持續(xù)的時間
                    })
                  },
                  complete: function() {
                    // complete  
                  }
                })
              }, 2000)
            }
          })
        } else
         {
          var i = setInterval(function() {
            wx.getLocation({
              type: 'gcj02 ', // 默認為 wgs84 返回 gps 坐標,gcj02 返回可用于 wx.openLocation 的坐標  
              success: function(res) {
                // success  
                var longitude = res.longitude
                var latitude = res.latitude
                page.loadCity(longitude, latitude)
                clearInterval(i)
              },
              fail: function() {
                // fail  
                console.info("loadInfo fail")
                wx.showToast({
                  title: '手機定位未打開',
                  icon: 'warn',
                  duration: 2000 //持續(xù)的時間
                })
              },
              complete: function() {
                // complete  
              }
            })
          }, 2000)
        }
      }
    })
  },

  loadCity: function(longitude, latitude) {
    var page = this
    wx.request({
      url: app.globalData.rootUrl + '/buyer/location/getLocation?longitude=' + longitude + '&latitude=' + latitude,
      data: {},
      header: {
        'Content-Type': 'application/json'
      },
      success: function(res) {
        // success 
        console.log("成功")
        console.log(res);
        var city = res.data.result.address_component.district;
        var community = res.data.result.address_reference.landmark_l2;
        if (community == null) {
          page.setData({
            community: city
          });
        } else {
          page.setData({
            community: community.title
          });
        }
      },
      fail: function() {
        // fail  
        console.log("失敗")
      },
      complete: function() {
        // complete  
      }
    })
  },

  searchAddress: function() {

  }
})

上面代碼中對逆地理編碼:即逆地址解析胸遇,使用的是騰訊地圖開放平臺

首先得申請key:

申請key

可以看出小程序端若是直接訪問https://apis.map.qq.com/ws/geocoder/v1/是不被允許的荧呐,小程序端只能訪問指定自己的服務器域名,因此將逆地址解析的事情放到服務器端纸镊。

Java Springboot 項目部分代碼

/**
 * RestTemplate配置類
 * RestTemplateConfig
 */
@Component
public class RestTemplateConfig {

    @Bean
    public RestTemplate restTemplate(ClientHttpRequestFactory factory){
        return new RestTemplate(factory);
    }

    @Bean
    public ClientHttpRequestFactory simpleClientHttpRequestFactory(){
        SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
        factory.setReadTimeout(5000);//ms
        factory.setConnectTimeout(15000);//ms
        return factory;
    }

}
/**
 * BuyerLocationController
 */
@RestController
@RequestMapping("/buyer/location")
@Slf4j
public class BuyerLocationController {

    @Autowired
    private RestTemplate restTemplate;

    @RequestMapping("/getLocation")
    public String getLocation(@RequestParam("longitude") String longitude, @RequestParam("latitude") String latitude) {
        String url = "https://apis.map.qq.com/ws/geocoder/v1/?location="+latitude+","+longitude+"&key=QTDBZ-XXXXX-77PVR-XXXXX-JSY3O-XXXXX&get_poi=1";
        String json = restTemplate.getForEntity(url, String.class).getBody();
        log.info("返回結果:"+json);
        return json;
    }
}
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末倍阐,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子逗威,更是在濱河造成了極大的恐慌峰搪,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件庵楷,死亡現(xiàn)場離奇詭異罢艾,居然都是意外死亡楣颠,警方通過查閱死者的電腦和手機尽纽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來童漩,“玉大人弄贿,你說我怎么就攤上這事〗门颍” “怎么了差凹?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長侧馅。 經(jīng)常有香客問我危尿,道長,這世上最難降的妖魔是什么馁痴? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任谊娇,我火速辦了婚禮,結果婚禮上罗晕,老公的妹妹穿的比我還像新娘济欢。我一直安慰自己赠堵,他們只是感情好,可當我...
    茶點故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布法褥。 她就那樣靜靜地躺著茫叭,像睡著了一般。 火紅的嫁衣襯著肌膚如雪半等。 梳的紋絲不亂的頭發(fā)上揍愁,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天,我揣著相機與錄音杀饵,去河邊找鬼吗垮。 笑死,一個胖子當著我的面吹牛凹髓,可吹牛的內(nèi)容都是我干的烁登。 我是一名探鬼主播,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼蔚舀,長吁一口氣:“原來是場噩夢啊……” “哼饵沧!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起赌躺,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤狼牺,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后礼患,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體是钥,經(jīng)...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年缅叠,在試婚紗的時候發(fā)現(xiàn)自己被綠了悄泥。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,779評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡肤粱,死狀恐怖弹囚,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情领曼,我是刑警寧澤鸥鹉,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站庶骄,受9級特大地震影響毁渗,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜单刁,卻給世界環(huán)境...
    茶點故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一灸异、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦绎狭、人聲如沸细溅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽喇聊。三九已至,卻和暖如春蹦狂,著一層夾襖步出監(jiān)牢的瞬間誓篱,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工凯楔, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留窜骄,地道東北人。 一個月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓摆屯,卻偏偏與公主長得像邻遏,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子虐骑,可洞房花燭夜當晚...
    茶點故事閱讀 44,700評論 2 354

推薦閱讀更多精彩內(nèi)容