【发布时间】:2014-12-09 08:14:39
【问题描述】:
我已经成功地让“Keating Hall”打开了一个新活动,但是我的位置列表(标记是通过外部 JSON 文件填充的,并且名称已准备好转换为字符串)。
我想让我的所有位置 InfoWindows 都发送到我的 OptionsActivity,而不是“Keating Hall”独有的。
下面是一些处理带有硬编码值的 OnInfoWindowClickListener 的代码:
private void setUpMapIfNeeded() {
if (map == null) {
map = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map))
.getMap();
if (map != null) {
setUpMap();
// allows info windows to be clicked on and open OptionsActivity
map.setOnInfoWindowClickListener(new OnInfoWindowClickListener(){
@Override
public void onInfoWindowClick(Marker marker){
if(marker.getTitle().equals("Keating Hall")){ // TODO replace Keating Hall with last marker clicked title
Intent info = new Intent(getApplicationContext(), OptionsActivity.class);
startActivity(info);
}
}
});
}
}
}
这里是处理带有每个位置标题的 JSON 数组的 void 函数:
void createMarkersFromJson(String json) throws JSONException {
// De-serialize the JSON string into an array of city objects
JSONArray jsonArray = new JSONArray(json);
for (int i = 0; i < jsonArray.length(); i++) {
// Create a marker for each city in the JSON data.
JSONObject jsonObj = jsonArray.getJSONObject(i);
map.addMarker(new MarkerOptions()
.title(jsonObj.getString("name"))
.snippet(Integer.toString(jsonObj.getInt("check ins")))
.position(new LatLng(
jsonObj.getJSONArray("latlng").getDouble(0),
jsonObj.getJSONArray("latlng").getDouble(1)
))
);
}
}
出于对所有美好事物的热爱,我不知道用什么来替换“Keating Hall”,以便我所有的 InfoWindows 都将 Intent 发送到 startActivity --> OptionsActivity,而不仅仅是其中一个。
我在这里浏览了一堆示例,但由于我使用的是 JSON,我无法复制使我的应用程序正常工作所需的更改。
提前感谢您的帮助。
【问题讨论】:
标签: android json google-maps