如何设置地图标注Pin图标的锚点?求类似Android的SetAnchor方法
解决地图中心Pin图标锚点设置问题
嘿,我之前也碰到过一模一样的需求!要让标注Pin精准对准地图中心,Android SDK里的setAnchor()方法就是核心解法,我给你详细说下怎么用:
锚点参数的含义:
setAnchor(p0, p1)里的两个参数都是0到1之间的浮点数,代表锚点相对于图标本身的比例:p0是水平方向比例:0=图标左边缘,0.5=水平居中,1=图标右边缘p1是垂直方向比例:0=图标上边缘,1=图标下边缘
大部分Pin图标的尖端在底部中心,所以设置
setAnchor(0.5f, 1.0f)就能让尖端精准对准地图中心的坐标点。完整代码示例:
假设你用的是Google Maps Android SDK,创建并设置锚点的代码如下:// 获取当前地图中心坐标 LatLng mapCenter = mGoogleMap.getCameraPosition().target; // 创建MarkerOptions并设置锚点 MarkerOptions pinMarkerOpts = new MarkerOptions() .position(mapCenter) .icon(BitmapDescriptorFactory.fromResource(R.drawable.your_pin_icon)) .anchor(0.5f, 1.0f); // 关键:让Pin底部中心作为锚点 // 添加Marker到地图 Marker startMarker = mGoogleMap.addMarker(pinMarkerOpts);保持Pin跟随地图中心移动:
如果需要地图拖动时Pin始终在中心,只需要监听相机移动事件,更新Marker的位置即可(锚点只需要设置一次):mGoogleMap.setOnCameraMoveListener(() -> { LatLng newCenter = mGoogleMap.getCameraPosition().target; startMarker.setPosition(newCenter); });其他SDK的适配:
要是你用的是高德、百度等其他地图SDK,它们也有几乎一样的锚点设置方法,比如高德的Marker.setAnchor(float u, float v),参数逻辑完全相同,只需要对应调整API调用即可。
内容的提问来源于stack exchange,提问作者Dhruv Chopra
相关产品推荐
相关产品推荐

