拖动时看不到标记?

时间:2013-05-12 03:17:50

标签: android-maps-v2

当您长时间点击可拖动标记时,标记会向上移动并允许您移动它。 我的问题是我无法看到标记的底部,因为我的手指位于其上方。我正在尝试准确定位标记图标的底部中间。

一个简单的解决方法是控制拖动时标记向上移动的偏移量。我会使这个偏移足够大,这样你就可以看到手指上方标记的底部。

我尝试在dragstart中手动预先偏移标记,但是一旦开始移动标记,它就会立即返回原始偏移。

2 个答案:

答案 0 :(得分:0)

目前无法实现。偏移量在API中进行了硬编码。

我建议在gmaps-api-issues上发布功能请求。

答案 1 :(得分:0)

我已经找到了解决此问题的方法,至少对我来说,它像是一种魅力。想法:将标记图标的锚点设置为图标下方所需的毫米/英寸。这会将图标上移到首选位置。但是这样做时,您必须将标记的纬度偏移适当的度数。我用来计算毫米级数的公式适用于地图的所有位置和缩放级别,但是常数(80)取决于您使用的图标的大小,当然取决于锚点,并且最可能取决于分辨率设备的对我来说,这段代码可以在我的Galaxy S9上完成工作:

mMap.setOnMarkerDragListener(new GoogleMap.OnMarkerDragListener() {
  @Override public void onMarkerDragStart(Marker marker) {
    marker.setAnchor(0.5f, 1.4f);
    VisibleRegion vR = mMap.getProjection().getVisibleRegion();
    View v = findViewById(R.id.map);
    offset = 80*(vR.latLngBounds.northeast.latitude - vR.latLngBounds.southwest.latitude)/v.getLayoutParams().height;
  }
  @Override public void onMarkerDrag(Marker marker) {
    // Your code. Replace all 'marker.getPosition()' by 'new LatLng(marker.getPosition().latitude + offset, marker.getPosition().longitude)'   
  }
  @Override public void onMarkerDragEnd(Marker marker) {
    // Your code.
  }
});