Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/192.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android setOnMarkerClickListener为每个标记设置标题_Android_Google Maps_Google Maps Api 3_Google Maps Markers_Markerclusterer - Fatal编程技术网

Android setOnMarkerClickListener为每个标记设置标题

Android setOnMarkerClickListener为每个标记设置标题,android,google-maps,google-maps-api-3,google-maps-markers,markerclusterer,Android,Google Maps,Google Maps Api 3,Google Maps Markers,Markerclusterer,我在我的应用程序中实现了一个clustermarker,我有一个来自我数据库的LatLng列表,现在我想在用户单击标记时将客户端的名称显示为标题,但当我单击标记时,它不会显示任何内容,我如何实现这一点,这是我目前的代码: public class MapaViagem extends FragmentActivity { private GoogleMap googleMap; private String rm_IdViagem; private List&l

我在我的应用程序中实现了一个clustermarker,我有一个来自我数据库的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();
    }


}
公共类映射策略扩展了碎片活动{
私人谷歌地图谷歌地图;
私有字符串rm_IdViagem;
private List mClienteModel=new ArrayList();
private List mEnderecoModel=new ArrayList();
专用ViageModel MVIAgeModel=新ViageModel();
私人群集管理器McClusterManager;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.maps);
ArrayList coordList=新的ArrayList();
试一试{
Bundle parametros=getIntent().getExtras();
rm_IdViagem=parametros.getString(“id_viagem”);
Repositorio ca=新的Repositorio(本);
mviagemodel=ca.getviagemproid(Integer.valueOf(rm_IdViagem));
Repositorio cl=新的Repositorio(本);
mClienteModel=cl.getClientesViagem(Integer.valueOf(rm_IdViagem));
int i;
对于(i=0;i
不确定如何初始化
标记
,因为您不显示代码的该部分,而是通过以下方式在其上添加标题:

//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"));
就是这样,当你点击它的时候,你会看到这个标记的信息

你可以找到更多信息

编辑

对于
ClusterManager
我想您可以