2013-10-30 61 views
1

我已将可绘制形状的自定义地图标记添加到了我的Google地图。这些标记是各种颜色的点。当用户点击其中一个标记时,将多段线从源位置绘制到所选标记;见图1;在Google地图v2上将地图标记移动一定数量的像素

]

图1:我的当前地图

线绘制直线到坐标由彩色点标记。然而,正如紫色圆点清楚地表明标记绘制在顶部 - 我宁愿多段线与圆的中心相交,使得来自每个角度的线看起来更像这样;

/] http://milspace.viecorefsd.com/~nlehman/example.png

图2:所需折线圆相交

为了实现这一点,我试图平移画布背衬由点半径可绘制。这是我的尝试;

// Circular marker. 
    final int px = getResources().getDimensionPixelSize(dimen.map_dot_marker_size); 
    final Bitmap mDotMarkerBitmap = Bitmap.createBitmap(px, px, Bitmap.Config.ARGB_8888); 
    final Canvas canvas = new Canvas(mDotMarkerBitmap); 
    final Drawable shape = getResources().getDrawable(drawable.purple_map_dot); 
    shape.setBounds(0, 0, px, px); 
    canvas.translate(0, px/2); 
    shape.draw(canvas); 
    final MarkerOptions options = new MarkerOptions(); 
    options.position(spot.getNearestCityLatLng()); 
    options.icon(BitmapDescriptorFactory.fromBitmap(mDotMarkerBitmap)); 
    options.title(spot.getNearestCity()); 
    lastLocationSelectionMarker.addMarker(options); 

的代码确实移动绘制但后盾画布的大小,该位保持不变的含义的圆圈在斩一半与另一半不可见。

社区可以告诉我如何最好地实现我在后的效果图2标记中心直接在它标记的坐标上吗?

回答

2

当您创建Marker时,您必须使用anchor属性。默认情况下,anchor被设置为0.5f,1f指向标记的中心水平和垂直底部。为了您的类型的标记,我会假设你需要使用[0.5f,0.5f]锚(参见documentation

所以,你的代码看起来像:

// Circular marker. 
final MarkerOptions options = new MarkerOptions(); 
options.position(spot.getNearestCityLatLng()); 
options.icon(BitmapDescriptorFactory.fromResource(R.drawable.purple_map_dot)); 
options.title(spot.getNearestCity()); 
options.anchor(0.5f, 0.5f); 
lastLocationSelectionMarker.addMarker(options); 
+0

啊!感谢您的默认锚点信息。我试图和主播一起玩,说实话,让Javadoc彻底迷惑了!它运作良好。 +1。 – OceanLife

相关问题