Android 如何设置覆盖项目的地理点并正确地放置到地图上?

Android 如何设置覆盖项目的地理点并正确地放置到地图上?,android,map,overlayitem,Android,Map,Overlayitem,我想要的是在行的正上方显示项目。如何设置项目的位置以进行此操作?(如下图第二幅图所示) 私有列表地图覆盖; 私人投影; @凌驾 创建时的公共void(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.main); linearLayout=(linearLayout)findViewById(R.id.zoomview); mapView=(mapView)findVie

我想要的是在行的正上方显示项目。如何设置项目的位置以进行此操作?(如下图第二幅图所示)

私有列表地图覆盖;
私人投影;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
linearLayout=(linearLayout)findViewById(R.id.zoomview);
mapView=(mapView)findViewById(R.id.mapView);
mapView.SetBuilTinZoomControl(真);
mapOverlays=mapView.getOverlays();
projection=mapView.getProjection();
添加(新的MyOverlay());
}
@凌驾
受保护的布尔值isRouteDisplayed(){
返回false;
}
类MyOverlay扩展覆盖{
公共MyOverlay(){
}   
公共空白绘制(画布、MapView mapv、布尔阴影){
super.draw(画布、贴图、阴影);
Paint mPaint=新油漆();
mPaint.setDither(true);
mPaint.setColor(Color.RED);
mPaint.setStyle(绘制、样式、填充和笔划);
mPaint.setStrokeJoin(油漆.连接.圆形);
mPaint.setStrokeCap(油漆盖圆形);
mPaint.设定行程宽度(2);
地质点gP1=新的地质点(19240000,-99120000);
地质点gP2=新的地质点(37423157,-122085008);
点p1=新点();
点p2=新点();
路径路径=新路径();
顶像素(gP1,p1);
顶像素投影(gP2,p2);
path.moveTo(p2.x,p2.y);
lineTo路径(p1.x,p1.y);
canvas.drawPath(路径,mPaint);
}

似乎当前标记的中心已绑定到地质点,但您希望绑定标记的底部

所以,在覆盖的构造函数中,您需要像这样调用方法

public MyItemizedOverlay(Drawable defaultMarker) {
  super(boundCenterBottom(defaultMarker));
}
可能你们需要编辑你们的标记图像,把红点放在图像的底部中心到水平中心

蓝色矩形是图像的近似大小。正如您所看到的,标记的中心不在图像的中心。绿色矩形是图像应如何更改以使标记的中心匹配图像的中心


与我的问题无关,而且我已经在做所有这些了。我想要的是在上面移动项目。我如何计算每个缩放级别的地质点?实际上,它是有效的,有3种构造函数方法,我只使用了其中一种方法的代码。但对于每个可绘制的项目,仍然存在修复问题。例如,一些其中一个看起来有点左对齐。这和图像的大小有关吗?如果是,我该怎么办?
public MyItemizedOverlay(Drawable defaultMarker) {
  super(boundCenterBottom(defaultMarker));
}