zoukankan      html  css  js  c++  java
  • 微信小程序~获取位置信息

     微信小程序提供的getlocation来获取用户的定位,能够得到用户的经纬度信息

    (注:getloaction需要用户授权scope.userLocation)结合map组件能够得到用户的详细定位

    <map id="map" longitude="{{longitude}}" latitude="{{latitude}}" scale="14" show-location style=" 100%; height: 400rpx;"></map>
    
    onReady:function(){
      wx.getLocation({
        type: 'wgs84',//默认wgs84是全球定位系统获取的坐标,gcj02是国家测绘局给出的坐标
        success: (res) => {
          console.log('经度' + res.longitude + ',纬度' + res.latitude);
          this.setData({
            latitude: res.latitude,
            longitude: res.longitude
          })
        }
      })
    }

    参数名参数类型描述
    longitude Number 中心经度
    latitude Number 中心纬度
    scale Number 缩放级别,取值范围 5-18(默认16 number)
    markers Array 标记点
    polyline Array 路线
    circle Array
    controls Array 控件
    include-points Array 缩放视野以及所有给定的坐标点
    circle Boolean
    show-location EventHandle 显示带有方向的当前定位点
    bindmarkertap EventHandle 点击标记点时触发
    bindcontroltap EventHandle 点击控件时触发
    bindregionchange EventHandle 视野发生变化时触发
    bindtap EventHandle 点击地图时触发

    除了显示基本地图,还可以在地图上添加markers–标注,polyline–折线,circles–圆形,controls–控件。

    markers
    data: {
        markers: [{
          iconPath: "../../img/marker_red.png",
          id: 0,
          latitude: 40.002607,
          longitude: 116.487847,
          callout:{
            content:'气泡名称',
            color: '#FF0000',
            fontSize: 15,
            borderRadius: 10,
            display: 'ALWAYS',
          },
           35,
          height: 45
        }],
        ... //省略代码
        }
    参数名参数类型必传描述
    id Number N 标记点id(marker事件回调会返回此id)
    longitude Number Y 中心经度(浮点数,范围:-180~180)
    latitude Number Y 中心纬度(浮点数,范围:-90~90)
    title String N 标注点名
    iconPath String Y 显示的图标(项目目录下的图片路径,支持相对路径写法,以‘/’开头,则表示相对小程序的根目录,也支持临时路径)
    rotate Number N 旋转角度(顺时针旋转的角度,范围:0~360,默认0)
    alpha Number N 标注的透明度(默认1,无透明)
    width Number N 标注图标宽度(默认图标实际宽度)
    height Number N 标注图标高度(默认图标实际高度)
    callout Object N 自定义标注点上方的气泡窗口 ({content,color,fontSize,borderRadius,bgColor,padding,boxShadow,display})
    label Object N 为标记点旁边增加标签({color,font Size,content,x,y},可识别换行符,x,y原点是marker对应的经纬度)
    polyline

    指定一系列坐标点,从数组第一项连线至最后一项

    参数名参数类型必传描述
    points Array Y 经纬度数组([{latitude:0,longitude:0}])
    color String N 线的颜色(8位16进制表示,后两位表示alpha值,如:#000000AA)
    width Number N 线的宽度
    dotted'Line Boolean N 是否是虚线(默认false)
    // .wxml
    <map id="myMap" style='100%;height:50%' longitude="{{longitude}}" latitude="{{latitude}}" polyline='{{polyline}}'/>
    // .js 
    Page({
        data: {
            polyline:[{
                points:[{
                    latitude:'40.006822',
                    longitude:'116.481451'
                 }, {
                    longitude: '116.487847',
                    latitude: '40.002607'
                 }, {
                    longitude: '116.496507',
                    latitude: '40.006103'
                 }, {
                    latitude:'40.002607',
                    longitude: '116.587847',
                }],
                2,
                color:'#000000AA',
                dottedLine:false
            }]
        }
    })

    circles

    在地图上显示圆

    参数名参数类型必传描述
    longitude Number Y 中心经度(浮点数,范围:-180~180)
    latitude Number Y 中心纬度(浮点数,范围:-90~90)
    color String N 描边颜色(8位16进制表示,后两位表示alpha值,如:#000000AA)
    fill'Color String N 填充颜色(8位16进制表示,后两位表示alpha值,如:#000000AA)
    strokeWidth Number N 描边宽度
    radius Number Y 半径
    // .wxml
    <map id="myMap" style='100%;height:50%' longitude="{{longitude}}" latitude="{{latitude}}" circles='{{circles}}'/>
    // .js 
    Page({
        data: {
            circles:[{
                latitude:40.002607,
                longitude: 116.587847,
                color: '#ee7788aa',
                radius: 50,
                fillColor:'#7cb5ec88',
                strokeWidth:1
            }]
        }
    })

    controls

    在地图上显示控件,控件不随地图移动

    参数名参数类型必传描述
    id Number N 控件id(在控件点击事件回调返回此id)
    position Object Y 控件在地图的位置(控件相对地图位置)
    icon'Path String Y 显示的图标(项目路径下的路径,支持相对路径写法,以‘/’开头表示相对小程序的根目录)
    clickable Boolean N 是否可点击(默认不可点击)

    position

    参数名参数类型必传描述
    left Number N 距离地图左边界的距离(默认为0)
    top Number N 距离地图上边界的距离(默认为0)
    width Number N 控件宽度(默认图片宽度)
    height Number N 控件高度(默认图片高度)
    // .wxml
    <map id="myMap" style='100%;height:400px' longitude="{{longitude}}" latitude="{{latitude}}" controls='{{controls}}' bindcontroltap='controltap'/>
    // .js 
    Page({
        data: {
            controls: [{
                id: 1,
                iconPath: '../../img/marker_yellow.png',
                position: {
                    left: 10,
                    top: 360,
                     35,
                    height: 35
                },
                clickable: true
            }]
        }
    }),
    controltap: function (e) {
        console.log(e.controlId); # 控件id 1
    }
    #可以通过在map上添加一个按钮,来实现诸如:定位、状态返回等操作。 
    #(直接通过布局文件在map上添加view是显示不出来的)
    绑定事件
    参数名参数类型描述
    bindmarkertap EventHandel 点击标记点时触发
    bindcontroltap EventHandel 点击控件时触发
    bindregionchange EventHandel 视野发生变化时触发
    bindtap EventHandel 点击地图时触发
    BUG

    关于经纬度,官方文档上都写的是Number类型。但是通过IDE调试的时候,写成字符串也是可以的。但是在IOS真机上运行时,markers却显示不出来,也不报错。

    后来自己对照属性的类型,发现后台传来的经纬度是字符串类型的。而字符串类型的经纬度在IOS真机上经测试就是显示不出来。

    所以将字符串转成Number类型即可。

    附原始手册地址:http://blog.csdn.net/crazy1235/article/details/55004841

    .

  • 相关阅读:
    DP(动态规划)学习心得
    hloj#402 护卫队解题讨论
    hloj#168“倒牛奶”解题讨论
    贪心:畜栏预定
    区间问题
    离散化
    差分
    浏览器的工作原理幕后揭秘的部分笔迹摘要
    python之阶乘的小例子
    关于python中urllib.urlencode的时候出错:UnicodeEncodeError: ‘ascii’的记录
  • 原文地址:https://www.cnblogs.com/fightjianxian/p/11108223.html
Copyright © 2011-2022 走看看