安卓Map的Marker对位与其他平台不一致
发布于 6 年前 作者 qsu 13840 次浏览 来自 问答

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

问题:

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的图

4 回复

继续补充:

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

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

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

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

继续自问自答

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

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

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

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

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

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

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

回到顶部