当前位置: 首页 > 知识库问答 >
问题:

Android谷歌地图点击标记打开新活动或更大窗口

曹涵润
2023-03-14

我一直在寻找关于实现OnMarkerClickListener的帮助,但我发现什么都没用。这是我下面的标记,单击它只会更改颜色(浅蓝色)。我希望它能打开一个更大的窗口,这样我可以输入更多的信息。这可能吗?

     googlemap.addMarker(new MarkerOptions()
    .position(new LatLng(49.378,-0.3904))
    .title("Hello World")
    .snippet("This is my test app")    
    .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_ORANGE)));

上面的标记在我的地图上工作得很好,但现在我想点击标记,让它打开一个新的活动/页面或一个更大的窗口,这是最容易使用的。由于我是制作应用程序的真正新手,如果有人成功获得了一个工作示例,请您提供一个链接或一些代码。

提前感谢!

编辑:

根据建议的教程,我已经更改了一些主要活动。Java语言

我添加了OnMarkerClickListener,并选择将未实现的方法添加到公共类中

  public class MainActivity extends Activity implements LocationListener, OnMarkerClickListener {

在private void setUpMap()下面,我向代码中添加了:private Marker myMarker、setonMarkerclick监听器和myMarker=,:

       private Marker myMarker;
         {
googlemap.setOnMarkerClickListener(this);

myMarker = googlemap.addMarker(new MarkerOptions()
    .position(new LatLng(LatLng))
    .title("Hello World")
    .snippet("My First App")    
    .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_ORANGE)));

 }

在底部的未实现方法中,我有:

   @Override
   public boolean onMarkerClick(Marker arg0) {
// TODO Auto-generated method stub 

return false;

我需要在公共布尔OnMarkerClick部分更改什么?我没有收到任何错误,但它就是不起作用。我还需要添加或更改什么?

感谢您的帮助!

共有3个答案

何乐
2023-03-14

如果您需要在市场中单击事件,此代码就是解决方案。

private GoogleMap mGoogleMap;


mGoogleMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener()
        {

            @Override
            public boolean onMarkerClick(Marker arg0) {
                if(arg0 != null && arg0.getTitle().equals(markerOptions2.getTitle().toString())); // if marker  source is clicked
                    Toast.makeText(menu.this, arg0.getTitle(), Toast.LENGTH_SHORT).show();// display toast
                return true;
            }

        });

祝你好运

海翔宇
2023-03-14

此代码处理maker click事件,并加载包含以下信息的新布局(XML):

/**
 * adding individual markers, displaying text on on marker click on a
 * bubble, action of on marker bubble click
 */
private final void addLocationsToMap() {
    int i = 0;
    for (Stores store : storeList) {
        LatLng l = new LatLng(store.getLatitude(), store.getLongtitude());

        MarkerOptions marker = new MarkerOptions()
                .position(l)
                .title(store.getStoreName())
                .snippet("" + i)
                .icon(BitmapDescriptorFactory
                        .defaultMarker(BitmapDescriptorFactory.HUE_GREEN));
        googleMap.addMarker(marker);
        ++i;
    }

    googleMap.setOnInfoWindowClickListener(new OnInfoWindowClickListener() {

        @Override
        public void onInfoWindowClick(Marker marker) {

            try {
                popUpWindow.setVisibility(View.VISIBLE);
                Stores store = storeList.get(Integer.parseInt(marker
                        .getSnippet()));

                // set details
                email.setText(store.getEmail());
                phoneNo.setText(store.getPhone());
                address.setText(store.getAddress());

                // setting test value to phone number
                tempString = store.getPhone();
                SpannableString spanString = new SpannableString(tempString);
                spanString.setSpan(new UnderlineSpan(), 0,
                        spanString.length(), 0);
                phoneNo.setText(spanString);

                // setting test value to email
                tempStringemail = store.getEmail();

                SpannableString spanString1 = new SpannableString(tempStringemail);
                spanString1.setSpan(new UnderlineSpan(), 0, spanString1.length(), 0);
                email.setText(spanString1);

                storeLat = store.getLatitude();
                storelng = store.getLongtitude();

            } catch (ArrayIndexOutOfBoundsException e) {
                Log.e("ArrayIndexOutOfBoundsException", " Occured");
            }

        }
    });

}
庄萧迟
2023-03-14

标记单击事件

在android map v2中单击后不要捕捉到标记

引用上面的帖子

您可以使用OnMarkerClickListener来侦听标记上的单击事件。要在地图上设置此侦听器,请调用GoogleMap。setOnMarkerClickListener(OnMarkerClickListener)。当用户单击标记时,将调用onMarkerClick(标记),标记将作为参数传递。此方法返回一个布尔值,指示您是否已使用该事件(即,您希望抑制默认行为)。如果返回false,则除了自定义行为之外,还会出现默认行为。标记单击事件的默认行为是显示其信息窗口(如果可用)并移动相机,使标记位于地图的中心。

https://developers.google.com/maps/documentation/android/reference/com/google/android/gms/maps/GoogleMap.OnMarkerClickListener.

在标记上使用OnMarkerClickListener。

检查代码片段的链接

Google Maps API v2:如何使标记可点击?

示例:在我的手机上工作


    Marker source, destination;
    GoogleMap mMap;

    mMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
    source = mMap.addMarker(new MarkerOptions()
            .position(sc)
            .title("MyHome")
            .snippet("Bangalore")
            .icon(BitmapDescriptorFactory.fromResource(R.drawable.pin)));

    destination = mMap.addMarker(new MarkerOptions()
            .position(lng)
            .title("MapleBear Head Office")
            .snippet("Jayanager")
            .icon(BitmapDescriptorFactory.fromResource(R.drawable.pin)));

    mMap.setOnMarkerClickListener(marker -> {
        if (marker.getTitle().equals("MyHome")) // if marker source is clicked
            Toast.makeText(MainActivity.this, marker.getTitle(), Toast.LENGTH_SHORT).show();// display toast
        return true;
    });

 类似资料:
  • 我需要一些帮助来绘制我正在绘制的地图。地图并不特别复杂,因为我是一个初学者,我有一堆带有信息窗口的标记(完成后还会有更多标记),单击标记或选择页面HTML端下拉菜单的相应项时可以打开这些标记。 当信息窗口打开时(在HTML菜单中单击或选择),我想做但自己找不到的是在地图上自动居中标记。我假设有某种函数可以分配给click或infowindow打开事件,但无法确定是哪种函数以及如何实现它。 我的代码

  • 问题:我无法在谷歌地图上显示标记。我希望用户单击要显示的标记,并将地图置于标记的中心。 损坏内容:单击时不显示标记。地图下方的lat/long div也不显示。 工作原理:地图将显示,并正确居中于单击位置。变量更新为。 自我诊断:我认为这个问题源于的范围问题,或者对的更改在AngularJS生命周期中没有被消化。 第三方包:我使用角谷歌地图。 我的代码片段: 超文本标记语言: 控制器: 概述:所需

  • 使用google maps API,我有一个带有一些自定义图标的近距离标记的地图。每个标记是41px×50px,但每个标记的可点击区域是200px×200px。带标记的地图截图及其可点击区域 有什么办法可以缩小可点击区域的大小吗?

  • 当我点击地图上的某个地方,应用程序绘制当前位置和目的地之间的折线(点击)。我希望目标标记是点击自己所有的时间(每几秒钟),所以在用户移动新的折线是绘制(更新最后一个)。

  • 我想使用自定义图标和c标记的地方 重写markerclick函数,并尝试获取该标记的标记,因为我存储在该标记中,在此之前,我使用了.equal方法来测试该标记是否等于该事件标记 我希望当我点击标记应该商店

  • 我有一张地图,上面有很多自定义的大标记。现在,我希望允许用户在地图上创建路径(显示为折线,稍后保存为地理坐标对列表)。 如果用户单击地图,我可以使用地图的setOnMapClickedListener方法收集这些位置。但是如果用户点击一个标记(setOnMarkerClickedListener),我只能检索标记的位置(通常是标记的ancor的位置)。