gpt4 book ai didi

android map 叠加绘制

转载 作者:行者123 更新时间:2023-11-29 22:31:24 25 4
gpt4 key购买 nike

我制作了一个 map 覆盖类并覆盖了如下所示的 onTouchEvent 方法:

 @Override
public boolean onTouchEvent(MotionEvent event, MapView mapView)
{
//TO-DO here we will capture when the users
//has pointed a point to go..
if(event.getAction() != MotionEvent.ACTION_MOVE){
GeoPoint p = mapView.getProjection().fromPixels(
(int) event.getX(),
(int) event.getY());

Geocoder geoCoder = new Geocoder(
getBaseContext(), Locale.getDefault());
try {
List<Address> addresses = geoCoder.getFromLocation(
p.getLatitudeE6() / 1E6,
p.getLongitudeE6() / 1E6, 1);

String add = "";
if (addresses.size() > 0)
{
for (int i=0; i<addresses.get(0).getMaxAddressLineIndex();
i++)
add += addresses.get(0).getAddressLine(i) + "\n";
}
Log.e("##################",
"screen touched: lat:"+(p.getLatitudeE6()/ 1E6)+"long:"+(p.getLongitudeE6()/ 1E6));
showMap((p.getLatitudeE6()/ 1E6),(p.getLongitudeE6()/ 1E6));
Toast.makeText(getBaseContext(), add, Toast.LENGTH_SHORT).show();
}
catch (IOException e) {
e.printStackTrace();
}
return true;
}else
return false;
}

问题是每次我在 map 上做一个手势时都会绘制 map ,我只想在点击 map 上的某个点时而不是在拖动 map 时这样做,这种方法是否正确?如何实现?

最佳答案

查看 ACTION_DOWN 和 ACTION_UP here

它们都会告诉您开始和停止的位置,因此您可以像这样进行检查:

float x, y;
if (event.getAction() == MotionEvent.ACTION_DOWN) {
x = event.getRawX();
y = event.getRawY();
} else if (event.getAction() == MotionEvent.ACTION_UP) {
if (((x - event.getRawX()) < threshhold_for_x) &&
(y - event.getRawY()) < threshhold_for_y)) {

// touch was in same location

}
}

无论如何这是一般的想法,当然你需要重置 x 和 y,如果他们做了一个手势并在相同的位置结束,它会触发它......

您可以使用 getDownTime () 使其更好地工作。

关于android map 叠加绘制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3846334/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com