Java 如何处理地图视图';单击事件并打开谷歌地图应用程序?

Java 如何处理地图视图';单击事件并打开谷歌地图应用程序?,java,android,android-mapview,android-maps,android-event,Java,Android,Android Mapview,Android Maps,Android Event,我的应用程序中有一个MapView。我已经让它按我所希望的方式工作,但我想处理所有的onClick或MapView的等效事件,并打开Google地图应用程序 我已经读到,我可以打开谷歌地图应用程序,但提出了一个意图,如下所示: String uri = "geo:"+ latitude + "," + longitude; startActivity(new Intent(android.content.Intent.ACTION_VIEW, Uri.parse(uri))); public

我的应用程序中有一个
MapView
。我已经让它按我所希望的方式工作,但我想处理所有的
onClick
MapView
的等效事件,并打开Google地图应用程序

我已经读到,我可以打开谷歌地图应用程序,但提出了一个
意图,如下所示:

String uri = "geo:"+ latitude + "," + longitude;
startActivity(new Intent(android.content.Intent.ACTION_VIEW, Uri.parse(uri)));
public boolean onTap(GeoPoint gptLocation, MapView mapMap) {

    String strCoordinates = String.format("%f,%f", gptCoordinates.getLatitudeE6() / 1E6, gptCoordinates.getLongitudeE6() / 1E6);
    String strUri = String.format("geo:%s?z=14", strCoordinates);
    Intent ittMap = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse(strUri));
    ittMap.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    this.ctxContext.startActivity(ittMap);
    return false;

}

如何捕获my
MapView
的上述事件?我还没弄明白。谢谢。

您应该在活动中有一个扩展
com.google.android.maps.Overlay
的类,并使用这个类“
onTouchEvent()
方法。像这样:

class MyOverlay extends Overlay {

    @Override
    public boolean onTouchEvent(MotionEvent e, MapView mapView) {
         ....
    }
    ....
}

您应该在活动中有一个扩展
com.google.android.maps.Overlay
的类,并使用这个类“
onTouchEvent()
方法。像这样:

class MyOverlay extends Overlay {

    @Override
    public boolean onTouchEvent(MotionEvent e, MapView mapView) {
         ....
    }
    ....
}

我使用的
onTap
事件如下:

String uri = "geo:"+ latitude + "," + longitude;
startActivity(new Intent(android.content.Intent.ACTION_VIEW, Uri.parse(uri)));
public boolean onTap(GeoPoint gptLocation, MapView mapMap) {

    String strCoordinates = String.format("%f,%f", gptCoordinates.getLatitudeE6() / 1E6, gptCoordinates.getLongitudeE6() / 1E6);
    String strUri = String.format("geo:%s?z=14", strCoordinates);
    Intent ittMap = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse(strUri));
    ittMap.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    this.ctxContext.startActivity(ittMap);
    return false;

}

我使用的
onTap
事件如下:

String uri = "geo:"+ latitude + "," + longitude;
startActivity(new Intent(android.content.Intent.ACTION_VIEW, Uri.parse(uri)));
public boolean onTap(GeoPoint gptLocation, MapView mapMap) {

    String strCoordinates = String.format("%f,%f", gptCoordinates.getLatitudeE6() / 1E6, gptCoordinates.getLongitudeE6() / 1E6);
    String strUri = String.format("geo:%s?z=14", strCoordinates);
    Intent ittMap = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse(strUri));
    ittMap.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    this.ctxContext.startActivity(ittMap);
    return false;

}

查看此答案中的解决方案是否对您有帮助:查看此答案中的解决方案是否对您有帮助:我尝试了此方法,但似乎仍然无法获得触摸/点击事件。我有一个自定义的
覆盖图
,用来在地图上绘制自定义标记。我将您提到的方法添加到我的自定义
Overlay
类中,但它不起作用。你知道我做错了什么吗?你的活动扩展了MapActivity吗?是的。我甚至试着从我的
Overlay
类中删除
draw()
方法,但是没有用。我想知道是不是布局和一些其他控件(例如
按钮
窃取焦点和触摸事件)有问题。我在什么地方读到过这类问题。有什么想法吗?我试过了,但似乎还是无法获得触摸/点击事件。我有一个自定义的
覆盖图
,用来在地图上绘制自定义标记。我将您提到的方法添加到我的自定义
Overlay
类中,但它不起作用。你知道我做错了什么吗?你的活动扩展了MapActivity吗?是的。我甚至试着从我的
Overlay
类中删除
draw()
方法,但是没有用。我想知道是不是布局和一些其他控件(例如
按钮
窃取焦点和触摸事件)有问题。我在什么地方读到过这类问题。有什么想法吗?