我正在学习如何使用Google Maps API,并尝试在this教程之后实现热图,但是在他们的代码中有一个readItems()方法,我斜面'弄清楚它的来源。
list = readItems(R.raw.police_stations);
我现在已经挣扎了一天半。 这个方法来自哪里?
谢谢,
private void addHeatMap() {
List<LatLng> list = null;
// Get the data: latitude/longitude positions of police stations.
try {
list = readItems(R.raw.police_stations);
} catch (JSONException e) {
Toast.makeText(this, "Problem reading list of locations.", Toast.LENGTH_LONG).show();
}
// Create a heat map tile provider, passing it the latlngs of the police stations.
mProvider = new HeatmapTileProvider.Builder()
.data(list)
.build();
// Add a tile overlay to the map, using the heat map tile provider.
mOverlay = mMap.addTileOverlay(new TileOverlayOptions().tileProvider(mProvider));
}
答案 0 :(得分:1)
您使用的教程基于Google Maps演示中的源代码。文件HeatmapsDemoActivity.java
包含readItems()
的定义。您可以通过点击these instructions中的“下载zip文件”下载地图工具和演示,或者查看GitHub上source file的第187行。
private ArrayList<LatLng> readItems(int resource) throws JSONException {
ArrayList<LatLng> list = new ArrayList<LatLng>();
InputStream inputStream = getResources().openRawResource(resource);
String json = new Scanner(inputStream).useDelimiter("\\A").next();
JSONArray array = new JSONArray(json);
for (int i = 0; i < array.length(); i++) {
JSONObject object = array.getJSONObject(i);
double lat = object.getDouble("lat");
double lng = object.getDouble("lng");
list.add(new LatLng(lat, lng));
}
return list;
}