收藏
回答

安卓Map的Marker对位与其他平台不一致

问题模块
客户端

官方的问题反馈模板粘贴后乱码了,这里简单说说。


问题:

Map组件,marker属性里面,譬如给定150x 150的图标, 那么图内什么地方对准目标点呢?

实际测试发现android和iOS的对齐方式不一致。


  1. iOS --- 图标中间最底部是目标点。  这个符合一般使用习惯,一般marker有个小尖对准目标点,就在中间下方。

  2. Android --- 接近左上角某个神秘的点。  实测发现并不是对齐左上角,而是左上角偏移某个值?


iOS和开发工具的表现一致,也符合使用习惯。

希望Android的地图改改, 与其他一致。


下面定位的微信总部。


代码:

<map id="map" longitude="113.324520" latitude="23.099994" scale="18" controls="{{controls}}" bindcontroltap="controltap" markers="{{markers}}" bindmarkertap="markertap" polyline="{{polyline}}" bindregionchange="regionchange" show-location style="width: 100%; height: {{dinfo.windowHeight}}px;" markers="{{markers}}"></map>


Page({

  data: {

    markers: [{

      iconPath: "/a.png",

      id: 0,

      latitude: 23.100100,

      longitude: 113.324560,

      width: 150,

      height: 150

    }],

  },

  onLoad: onLoad

})




用到的图标



腾讯地图官方工具


开发工具:



来自Android的图



最后一次编辑于  2017-01-17  (未经腾讯允许,不得转载)
邀请回答
复制链接收藏关注问题回答

5 个回答

  • jeff
    jeff
    2017-01-17

    安卓地图还有一些其他问题:


    1. 无法放大到18级别,无论是收拾拉大或者attribute设置都不行

    2. circle的半径与设定实际不符合,目前手上的机器测试表明,是设置值的3倍,不确定是否和设备像素尺寸有关。

    2017-01-17
    赞同
    回复
  • jeff
    jeff
    2017-01-17

    继续自问自答


    1. 安卓似乎 以固定的  15 x 15 marker来计算。当你的marker设置为15 x 15大小时,就对准了图标中间底部。考虑到目前安卓地图放不大,似乎也可以这么用

    2. Circle在小屏幕机器上,观察到有放大2倍的。 结论是和设备屏幕大小有关。


    根据上述结论,可以做一些ugly的 workaround

    2017-01-17
    赞同
    回复
  • jeff
    jeff
    2017-01-20

    继续补充:


    安卓radius需要除一下, 先获取 getSystemInfo里面的pixelRatio。

    譬如目前主流安卓机型应该是3,小屏幕一点的是2。


    你要显示50米的话,要设定为 50/pixelRatio。

    这个应该是bug,但是不能知道微信打算啥时候改。 改完还得判定微信版本号来做不同处理

    2017-01-20
    赞同
    回复
  • 詹道楠
    詹道楠
    2017-02-03

    遇到了类似的问题,marker在Android上偏差有些大

    2017-02-03
    赞同
    回复 1
    • ➹孤あぃ夜
      ➹孤あぃ夜
      2018-07-27

      你的问题解决了吗?我现在也遇到这个问题,安卓机上显示marker一大一小


      2018-07-27
      赞同
      回复