Android setOnMarkerClickListener为每个标记设置标题
我在我的应用程序中实现了一个clustermarker,我有一个来自我数据库的LatLng列表,现在我想在用户单击标记时将客户端的名称显示为标题,但当我单击标记时,它不会显示任何内容,我如何实现这一点,这是我目前的代码: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
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
我想您可以