当我设置触摸侦听器以获得触摸位置拉长时,当我从我的代码中移除触摸侦听器时,放大和缩小功能无法正常工作。那么如何在谷歌地图中实现放大和缩小工作并获得触摸位置拉长?
我的代码在
下面 mapView = (MapView) findViewById(R.id.map);
mapView.setBuiltInZoomControls(true);
mapView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
Log.i("!!!!!","*****");
//---when user lifts his finger---
if (event.getAction() == MotionEvent.ACTION_UP) {
Projection p2 = mapView.getProjection();
GeoPoint geoPoint = p2.fromPixels((int) event.getX(), (int)event.getY());
int latitude = geoPoint.getLatitudeE6();
int longitude = geoPoint.getLongitudeE6();
String aString = Integer.toString(latitude);
String aString2 = Integer.toString(longitude);
Log.i("latitude,longitude",aString+",,"+aString2);
if((latitude < -34.538238) && (latitude > -34.672182))
{
if((longitude < -58.347702) && (longitude > -58.528976))
{
Log.i("lat,long",aString+",,"+aString2);
}
else
{
Log.i("out of region",aString+",,"+aString2);
}}
Log.i("@@@@@!!!!!","*****");
}
return true;
}
});
答案 0 :(得分:3)
当setOnTouchListener
setBuiltInZoomControls(true)
无法使用时。
您可以按命令displayZoomControls(true)
显示缩放按钮。您的地图不会缩放,也不会通过触摸或多点触控移动,但您可以通过单击缩放按钮来缩放地图。
另一种方法是,当您不需要处理触摸但需要缩放地图时,按mapView.setOnTouchListener(null)
关闭监听器并按setBuiltInZoomControls(true)
缩放地图。在您需要处理触摸的那一刻,您可以设置监听器mapView.setOnTouchListener(new OnTouchLister(...))
,但触摸机会缩放会丢失。如果不需要触摸,请执行mapView.setOnTouchListener(null)
并再次setBuiltInZoomControls(true)
缩放地图。
答案 1 :(得分:0)
试试这个。应该能够获得您之前所做的缩放控件和GeoPoint内容。
public boolean onTouchEvent(MotionEvent event,MapView m) {
boolean status = false;
int start,stop = 0;
long long_click_time = 1500; //1.5 seconds
if(e.getAction() == MotionEvent.ACTION_DOWN){
start = event.getEventTime();
}
if(e.getAction()==MotionEvent.ACTION_UP){
stop = event.getEventTime();
}
if(stop-start>long_click_time){
//do your work
status = true;
}
return status;
}
返回false应该为您提供缩放控件。该方法应该在Overlay的子类中。在下面的代码中,“Touchy”类继承自Overlay。
List<Overlay> overlayList = this.map.getOverlays();
Touchy touchy = new Touchy(Maps.this);
overlayList.add(touchy);