【问题标题】:Setting onMarkerClickListener on different markers在不同的标记上设置 onMarkerClickListener
【发布时间】:2017-11-21 11:43:01
【问题描述】:

我想设置不同标记的 OnMarkerClickListener。在这里,每当单击相应的标记时,我想打印 i 循环的变量值。所以我按照以下方式做了..但它不起作用,它在每次不同的标记点击时在 Snackbar 上显示相同的最后一个循环值 170 .. 但我想得到 0,10,20, 30....170 分别在小吃栏中的不同标记点击。

请帮忙...

    @Override
    public void onMapReady(GoogleMap googleMap) {
        mMap = googleMap;



        // SETTING MARKER
        for(int i=0;i<180;i=i+10) {
            LatLng sydney = new LatLng(i, i);
            mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Position"+i));

            //ON MARKER CLICK
            final int finalI = i;

            mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {

                @Override
                public boolean onMarkerClick(Marker marker) {
                    Snackbar.make((View) findViewById(R.id.map),""+finalI,Snackbar.LENGTH_LONG).show();
                    return true;
                }
            });
        }
}

这是由循环创建的标记 但我得到与 170 相同的值

【问题讨论】:

    标签: android google-maps android-fragments google-maps-api-3 android-snackbar


    【解决方案1】:

    要解决您的问题,您应该有一个标记数组。

    试试这个:

    首先让您的应用实现 GoogleMap.OnMarkerClickListener 然后创建一个 Marker 数组:

    Marker[] marker = new Marker[20]; //change length of array according to you
    

    然后在里面

    onMapReady(){
    mMap.setOnMarkerClickListener(this);
     for(int i=0;i<180;i=i+10) {
                LatLng sydney = new LatLng(i, i);
                marker[i] = mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Position"+i));
    
    
            }
    }
    

    最后

         @Override
        public boolean onMarkerClick(Marker marker) {
       //you can get assests of the clicked marker
       return false;
    }
    

    【讨论】:

      【解决方案2】:

      我找到了一种方法...

              @Override
              public void onMapReady(GoogleMap googleMap) {
                  mMap = googleMap;
      
                  // SETTING MARKER
                  for(int i=0;i<180;i=i+10) {
                      LatLng sydney = new LatLng(i, i);
                      mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Position"+i));
      
                      }
      
              //ON MARKER CLICK
              mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
      
              @Override
              public boolean onMarkerClick(Marker marker) {
                  for(int i=0;i<180;i=i+10) {
                      if (marker.getTitle().equals("Marker in Position" + i))
                          Snackbar.make((View) findViewById(R.id.map), "" + i, Snackbar.LENGTH_LONG).show();
      
                  }return true;
              }
          });
          }
      

      【讨论】:

        猜你喜欢
        • 2017-10-04
        • 2013-01-03
        • 2017-01-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-06-05
        • 1970-01-01
        • 2020-11-11
        相关资源
        最近更新 更多