I didn't create a new marker object on each loop through. This ended up working for me:
try {
markerInfo = new HashMap<Marker, MapMarkers>();
File fXmlFile = new File(
"/storage/emulated/0/data/kml/labels.kml");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory
.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(fXmlFile);
doc.getDocumentElement().normalize();
NodeList nList = doc.getElementsByTagName("Placemark");
for (int temp = 0; temp < nList.getLength(); temp++) {
// must make new each time around...
MapMarkers marks = new MapMarkers();
Node nNode = nList.item(temp);
if (nNode.getNodeType() == Node.ELEMENT_NODE) {
Element eElement = (Element) nNode;
String name = eElement.getElementsByTagName("name").item(0)
.getTextContent();
String desc = eElement.getElementsByTagName("description")
.item(0).getTextContent();
String lon = eElement.getElementsByTagName("longitude")
.item(0).getTextContent();
String lat = eElement.getElementsByTagName("latitude")
.item(0).getTextContent();
lon = lon.trim();
lat = lat.trim();
double lati = Double.parseDouble(lat);
double lngi = Double.parseDouble(lon);
marks.setTitle(name);
marks.setDesc(desc);
Marker m = map.addMarker(new MarkerOptions()
.position(new LatLng(lati, lngi))
.title(marks.getTitle())
.icon(BitmapDescriptorFactory
.fromResource(R.drawable.youmarker)));
markerInfo.put(m, marks);
map.setOnInfoWindowClickListener(new OnInfoWindowClickListener() {
@Override
public void onInfoWindowClick(Marker marker) {
MapMarkers eventInfo = markerInfo.get(marker);
msg(Html.fromHtml(eventInfo.getDesc()));
// Log.e("ID", marker.getId());
// Log.v("EI", eventInfo.getTitle() + " ----- "
// + eventInfo.getDesc());
}
});
}
}
} catch (Exception e) {
Log.e("Data Buildmap Error", e.getMessage());
}