我坚持这个,我已经尝试了所有可能但没有成功。我已经创建了简单的应用程序与地图进行测试,用户可以简单地触摸地图和那个地方放置标记。这将在除htc设备之外的所有设备中成功运行。我不知道如何为mapview实现onTouch事件
这是我的onTouch代码
private class MarkerOverlay extends Overlay{
private boolean isMove;
@Override
public boolean onTouchEvent(MotionEvent e, MapView mapView) {
final int x = (int) e.getX();
final int y = (int) e.getY();
if(e.getAction()==1){
if(!isMove){
geopoint = mapView.getProjection().fromPixels(x, y);
OverlayItem overlayItem = new OverlayItem(geopoint, "Title", "Description");
if(mapOverlay.m_overlays.size()>=1){
mapOverlay.clearOverlayAll();
}
mapOverlay.addOverlay(overlayItem);
if(!mapView.getOverlays().contains(mapOverlay))
mapView.getOverlays().add(mapOverlay);
mapView.invalidate();
Toast.makeText(SimpleMapMarkerActivity.this, "in press", Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(SimpleMapMarkerActivity.this, "out press", Toast.LENGTH_SHORT).show();
}
}else if(e.getAction()==MotionEvent.ACTION_DOWN)
isMove = false;
else if(e.getAction()==MotionEvent.ACTION_MOVE)
isMove = true;
return super.onTouchEvent(e, mapView);
}
}
答案 0 :(得分:0)
我遇到了同样的问题。我不确定它是否能解决你的htc问题。但这就是我所做的:
我已经覆盖了dispatchTouchEvent。它适用于我的三星Galaxy s2。
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
// TODO Auto-generated method stub
if(ev.getAction() == MotionEvent.ACTION_DOWN){
xPos = ev.getX();
yPos = ev.getY();
}
if (ev.getAction() == MotionEvent.ACTION_UP){
if (xPos==ev.getX() && yPos == ev.getY()){
Log.i(LOG_TAG, "Calling onTouch from dispatchTouchEvent.");
onTouch(mapView, ev);
}
}
return super.dispatchTouchEvent(ev);
}
我在mapActivity中这样做。不在overLay。
答案 1 :(得分:0)
<强> MapMarkerExample 强>
此示例显示如何在地图上绘制可移动标记。你可以打开并放下标记来改变它的位置。可以在任何需要用户输入地图位置的应用程序中使用。
算法:
1。)通过File-&gt;创建一个新项目。新 - &gt; Android Project将其命名为MapMarkerExample。 2.)您将在main.xml和android清单文件中看到一些默认代码。 3.)为您的清单文件添加Internet权限或在android.manifest文件中写入以下内容:
http://www.edumobile.org/android/android-apps/mapmarkerexample/
答案 2 :(得分:0)
我得到了harism给出的解决方案和解决方案
每当您使用地图实施标记时,就像点击地图并显示市场一样,然后实施onTap(GeoPoint g, MapView mapview)
。
如果您想要像拖放一样按照用户移动标记,那么请使用onTouch()
来实现。对于onTouch()
和拖放等移动标记,请检查此链接
http://www.edumobile.org/android/android-apps/mapmarkerexample/