Java 如何控制覆盖项';谷歌安卓地图上的尺寸是多少?
所以我有几乎完全相同的,除了他们决定使用的解决方案的黑客工作对我来说根本不起作用。我需要一个真正的解决方案,所以我决定对android地图源代码进行反向工程,以找到最佳解决方案Java 如何控制覆盖项';谷歌安卓地图上的尺寸是多少?,java,android,google-maps,Java,Android,Google Maps,所以我有几乎完全相同的,除了他们决定使用的解决方案的黑客工作对我来说根本不起作用。我需要一个真正的解决方案,所以我决定对android地图源代码进行反向工程,以找到最佳解决方案 我当前的解决方案是重写类中扩展OverlayItem的draw方法,但随后我遇到了一个问题,即点击地图上的overlay项不起作用(点击注册在实际项目绘制位置以外的位置)。因此,我将继续挖掘,直到找到合适的方法组合来覆盖。对于任何与我有相同问题的人来说,解决方法其实非常简单 您只需在OverlayItem的drawabl
我当前的解决方案是重写类中扩展OverlayItem的draw方法,但随后我遇到了一个问题,即点击地图上的overlay项不起作用(点击注册在实际项目绘制位置以外的位置)。因此,我将继续挖掘,直到找到合适的方法组合来覆盖。对于任何与我有相同问题的人来说,解决方法其实非常简单 您只需在OverlayItem的drawable上设置边界,如下所示:
Drawable d = myOverlayItem.getMarker(0);
d.setBounds(-xWidth/2, -yWidth/2, xWidth, yWidth);
getMarker的参数实际上取决于overlayItem的状态,但就我个人而言,所有状态都是相同的,所以我不在乎,只使用了0
我不确定解决方案将如何随实际设置边界的位置而变化,但对我来说,我是在ItemizeOverlay子类的draw方法中进行的:
@Override
public void draw(android.graphics.Canvas canvas, MapView mapView, boolean shadow) {
if (!shadow) {
// Do your projection calculations here, if necessary
for (int i = 0; i < mOverlays.size(); i++) {
Drawable d = mOverlays.get(i).getMarker(0);
d.setBounds(-width/2, -height/2, width/2, height/2);
}
}
super.draw(canvas, mapView, shadow);
}
(它发生在canvas.translate调用中)
有人关心的可能性很小
(对maps.jar进行反向工程花费了我大量的工作,因此我最好能充分利用我的努力)。对于任何与我有相同问题的人来说,解决方案其实非常简单 您只需在OverlayItem的drawable上设置边界,如下所示:
Drawable d = myOverlayItem.getMarker(0);
d.setBounds(-xWidth/2, -yWidth/2, xWidth, yWidth);
getMarker的参数实际上取决于overlayItem的状态,但就我个人而言,所有状态都是相同的,所以我不在乎,只使用了0
我不确定解决方案将如何随实际设置边界的位置而变化,但对我来说,我是在ItemizeOverlay子类的draw方法中进行的:
@Override
public void draw(android.graphics.Canvas canvas, MapView mapView, boolean shadow) {
if (!shadow) {
// Do your projection calculations here, if necessary
for (int i = 0; i < mOverlays.size(); i++) {
Drawable d = mOverlays.get(i).getMarker(0);
d.setBounds(-width/2, -height/2, width/2, height/2);
}
}
super.draw(canvas, mapView, shadow);
}
(它发生在canvas.translate调用中)
有人关心的可能性很小
(对maps.jar进行反向工程花了我很多工作,所以我最好能充分利用我的努力)