首頁>Program>source

我使用以下代碼段在Google地圖上顯示多个位置.我將這些坐標作為陣列.在地圖上顯示標記後,我想單击標記的資訊視窗後进行活動.單击單个標記後,每个資訊視窗應具有不同的活動.我有4个標記,我想通過單击資訊視窗来訪問4个不同的活動.我應该如何實施呢? 谢谢

我在地圖上放置標記的代碼

    Marker a1 = googleMap.addMarker(new MarkerOptions().position(a)
                .title(arr[0])
                .snippet(arr[1])            );
       Marker b1 = googleMap.addMarker(new MarkerOptions().position(b)
                .title(arr[9])
                .snippet(arr[10])                 );
        Marker c1= googleMap.addMarker(new MarkerOptions().position(c)
                .title(arr[18])
                .snippet(arr[19]));
        Marker d1= googleMap.addMarker(new MarkerOptions().position(d)
                .title(arr[27])
                .snippet(arr[28]));
最新回復
  • 5月前
    1 #

    使用HashMap儲存標記ID以及它應打開哪个活動的相應標識。

    然後,使用 OnInfoWindowClickListener 获取使用者單击資訊視窗的事件,並使用HashMap確定要打開哪个活動。

    將HashMap宣告為例項變數:

    //Declare HashMap to store mapping of marker to Activity
    HashMap<String, String> markerMap = new HashMap<String, String>();
    

    然後,每次添加標記時,在HashMap中輸入一个條目:

           String id = null;
            Marker a1 = googleMap.addMarker(new MarkerOptions().position(a)
                    .title(arr[0])
                    .snippet(arr[1]));
            id = a1.getId();
            markerMap.put(id, "a1");
            Marker b1 = googleMap.addMarker(new MarkerOptions().position(b)
                    .title(arr[9])
                    .snippet(arr[10]));
            id = b1.getId();
            markerMap.put(id, "b1");
            Marker c1= googleMap.addMarker(new MarkerOptions().position(c)
                    .title(arr[18])
                    .snippet(arr[19]));
            id = c1.getId();
            markerMap.put(id, "c1");
            Marker d1= googleMap.addMarker(new MarkerOptions().position(d)
                    .title(arr[27])
                    .snippet(arr[28]));
            id = d1.getId();
            markerMap.put(id, "d1");
        }
    

    然後定義資訊視窗中的單击侦听器:

       googleMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
            @Override
            public void onInfoWindowClick(Marker marker) {
                String m = markerMap.get(marker.getId());
                if (m.equals("a1")){
                    Intent i = new Intent(MainActivity.this, ActivityA1.class);
                    startActivity(i);
                }
                else if (m.equals("b1")){
                    Intent i = new Intent(MainActivity.this, ActivityB1.class);
                    startActivity(i);
                }
                else if (m.equals("c1")){
                    Intent i = new Intent(MainActivity.this, ActivityC1.class);
                    startActivity(i);
                }
                else if (m.equals("d1")){
                    Intent i = new Intent(MainActivity.this, ActivityD1.class);
                    startActivity(i);
                }
            }
        });
    

  • 5月前
    2 #

    我可以看到鏈接了多个欄位:

      Title

      Snippet

      Position

      Activity

    在這裏,您可以通過代碼完成此操作:

    建立自定義類:

    public static class MyMarker {
        Marker marker;
        MarkerOptions options = new MarkerOptions();
        Class activity;
        public MyMarker(String title, String snippet, LatLng position, Class activity) {
            // MarkerOptions
            options.title(title)
                    .snippet(snippet)
                    .position(position);
            // Target activity
            this.activity = activity;
        }
        // Compare Marker variable instead of MyMarker
        @Override
        public boolean equals(Object o) {
            return o != null && o.equals(marker);
        }
    }
    

    準備標記:

    final List<MyMarker> myMarkers = new ArrayList<>();
    myMarkers.add(new MyMarker("title1", "snippet1", new LatLng(10, 10), MainActivity1.class));
    myMarkers.add(new MyMarker("title2", "snippet2", new LatLng(20, 20), MainActivity2.class));
    

    將標記添加到GoogleMap並儲存返迴的物件:

    for (MyMarker myMarker : myMarkers) {
        myMarker.marker = googleMap.addMarker(myMarker.options);
    }
    

    向您的地圖添加標記點击侦听器:

    googleMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
        @Override
        public boolean onMarkerClick(Marker marker) {
            // Will use the overridden equals method
            int index = myMarkers.indexOf(marker);
            if (index != -1) {
                // Considering that MainActivity is the current activity
                Intent intent = new Intent(MainActivity.this, myMarkers.get(index).activity);
                startActivity(intent);
            }
            return false;
        }
    });
    

    上面的侦听器將在添加的標記陣列中查詢被單击的標記,如果存在,將啟動相關的活動。

  • security:MVC 6繫結屬性消失了吗?
  • javascript:為什麼迴圈將最後一个索引元素的引用分配给它?