【问题标题】:Android setOnMarkerClickListener set title for each markerAndroid setOnMarkerClickListener 为每个标记设置标题
【发布时间】:2023-03-27 01:42:01
【问题描述】:

我已经在我的应用程序中实现了一个集群标记,我有一个来自我的数据库的 LatLng 列表,现在我想在用户单击标记时将客户端的名称显示为标题,但是当我单击标记它什么也没显示,我怎样才能做到这一点,这是我到目前为止的代码:

    public class MapaViagem extends FragmentActivity {

    private GoogleMap googleMap;
    private String rm_IdViagem;
    private List<ClienteModel> mClienteModel = new ArrayList<ClienteModel>();
    private List<EnderecoModel> mEnderecoModel = new ArrayList<EnderecoModel>();
    private ViagemModel mViagemModel = new ViagemModel();
    private ClusterManager<MyItem> mClusterManager;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);


        setContentView(R.layout.maps);
         ArrayList<LatLng> coordList = new ArrayList<LatLng>();

        try {

            Bundle parametros = getIntent().getExtras();
            rm_IdViagem = parametros.getString("id_viagem");

            Repositorio ca = new Repositorio(this);
            mViagemModel = ca.getViagemPorId(Integer.valueOf(rm_IdViagem));

            Repositorio cl = new Repositorio(this);
            mClienteModel = cl.getClientesViagem(Integer.valueOf(rm_IdViagem));

            int i;

            for ( i = 0; i < mClienteModel.size(); i++) {


                Repositorio mRepositorio = new Repositorio(this);
                mEnderecoModel = mRepositorio.getListaEnderecosDoCliente(Integer.valueOf(mClienteModel.get(i).getClientes_id()));


                System.out.println("NOMES " + mClienteModel.get(i).getNome());


                for (int j = 0; j < mEnderecoModel.size(); j++) {
                    // Loading map
                    initilizeMap();
                    // Changing map type
                    googleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
                    // googleMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
                    // googleMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
                    // googleMap.setMapType(GoogleMap.MAP_TYPE_TERRAIN);
                    // googleMap.setMapType(GoogleMap.MAP_TYPE_NONE);

                    // Showing / hiding your current location
                    googleMap.setMyLocationEnabled(true);

                    // Enable / Disable zooming controls
                    googleMap.getUiSettings().setZoomControlsEnabled(true);

                    // Enable / Disable my location button
                    googleMap.getUiSettings().setMyLocationButtonEnabled(true);

                    // Enable / Disable Compass icon
                    googleMap.getUiSettings().setCompassEnabled(true);

                    // Enable / Disable Rotate gesture
                    googleMap.getUiSettings().setRotateGesturesEnabled(true);

                    // Enable / Disable zooming functionality
                    googleMap.getUiSettings().setZoomGesturesEnabled(true);


                    final float latitude = Float.parseFloat(mEnderecoModel.get(j).getLatitude());
                    final float longitude = Float.parseFloat(mEnderecoModel.get(j).getLongitude());


                    coordList.add(new LatLng(latitude, longitude));


                    googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(latitude, longitude), 10));



                    // Initialize the manager with the context and the map.
                    // (Activity extends context, so we can pass 'this' in the constructor.)
                    mClusterManager = new ClusterManager<MyItem>(this, googleMap);

                    // Point the map's listeners at the listeners implemented by the cluster
                    // manager.
                    googleMap.setOnCameraChangeListener(mClusterManager);
                    googleMap.setOnMarkerClickListener(mClusterManager);








                    addItems(coordList);


                    googleMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {

                        @Override
                        public boolean onMarkerClick(final Marker marker) {
                            LatLng pos = marker.getPosition();
                            int arryListPosition = getArrayListPosition(pos);


                            return true;
                        }
                    });



                }


            }


        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private int getArrayListPosition(LatLng pos) {

        for (int i = 0; i < mEnderecoModel.size(); i++) {
            if (pos.latitude == Double.parseDouble(mEnderecoModel.get(i).getLatitude().split(",")[0])) {
                if (pos.longitude == Double.parseDouble(mEnderecoModel.get(i).getLongitude().split(",")[1]))
                    return i;
            }
        }
        return 0;
    }

    private void addItems(List<LatLng> markers) {

        for (int i = 0; i < markers.size(); i++) {
            MyItem offsetItem = new MyItem(markers.get(i));
            mClusterManager.addItem(offsetItem);
        }
    }



    private void initilizeMap() {
        if (googleMap == null) {
            googleMap = ((MapFragment) getFragmentManager().findFragmentById(
                    R.id.map)).getMap();

            // check if map is created successfully or not
            if (googleMap == null) {
                Toast.makeText(getApplicationContext(),
                        "Não foi possível carregar o mapa", Toast.LENGTH_SHORT)
                        .show();
            }
        }
    }

    @Override
    protected void onResume() {
        super.onResume();
        initilizeMap();
    }


}

【问题讨论】:

    标签: android google-maps google-maps-api-3 google-maps-markers markerclusterer


    【解决方案1】:

    不知道你是如何初始化你的Markers,因为你没有显示那部分代码,而是在上面加上标题是这样完成的:

    //You need a reference to a GoogleMap object
    GoogleMap map = ... // get a map.
    Marker marker = map.addMarker(new MarkerOptions()
     .position(new LatLng(37.7750, 122.4183))     //Or whatever coordinate
     .title("Your title")
     .snippet("Extra info"));
    

    就是这样,当你点击它时,你会看到那个标记的信息。

    您可以找到更多信息here

    编辑

    对于ClusterManager我想你会发现this answer很有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-11
      • 1970-01-01
      • 1970-01-01
      • 2017-05-12
      • 2018-11-08
      • 1970-01-01
      相关资源
      最近更新 更多