【发布时间】:2016-04-28 00:41:55
【问题描述】:
我正在开发一个应用程序,可以动态地将标记添加到谷歌地图。每个标记都是从自定义 Map 对象生成并通过 SparseArray 关联。这是我用来将标记与 Map 对象相关联、将标记添加到地图并设置 MarkerCliclListener 的方法:
/**
* @author Flagg327
* @param _map: Array List with Map objects
*/
public void addMarkers(final ArrayList<Map> _map){
markerMap = new SparseArray<Marker>();
for(Map obj : _map) {
markerMap.put(obj.getId(), map.addMarker(getMarkerForObject(obj)));
}
// Bound map to markers
LatLngBounds.Builder builder = new LatLngBounds.Builder();
for (int cont = 0; cont < _map.size(); cont++) {
MarkerOptions marker = new MarkerOptions().position(markerMap.get(cont).getPosition());
builder.include(marker.getPosition());
}
// Bound map to markers
LatLngBounds bounds = builder.build();
int padding = dpToPx(80);
CameraUpdate cu = CameraUpdateFactory.newLatLngBounds(bounds, padding);
map.animateCamera(cu);
map.setOnMarkerClickListener(markerClickListener);
}
/**
*
* @param obj: Map object that contains marker's latitude and longitude
* @return
*/
public MarkerOptions getMarkerForObject(Map obj){
return new MarkerOptions().position(new LatLng(obj.lat, obj.lng));
}
问题是我需要在单击标记时获取与标记相关的 Map 对象的引用,以便获取包含此标记的所有数据特定的地图对象。像这样的:
/**
* Marker click listener
*/
private OnMarkerClickListener markerClickListener = new OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker marker) {
// TODO Get reference to the Map Object related to *marker*
return false;
}
};
非常感谢您抽出宝贵时间。对不起我的英语(我正在尝试摆脱 Google 翻译 xD)。
【问题讨论】:
-
尝试关注这个,我认为它对你有帮助stackoverflow.com/questions/18126396/…
标签: android google-maps