2015-07-12 25 views
1

我正在學習如何使用谷歌地圖API,和我想要實現一個熱圖,下面this教程,但他們的代碼有一個readItems()方法我不能」找出從那裏它正在添加。谷歌地圖Android的熱圖實用教程 - 無法解析方法

list = readItems(R.raw.police_stations); 

我一直在爲此掙扎了一天半。 凡本methos從正在添加?

謝謝

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)); 
} 

回答

1

您正在使用的教程是鬆散的基礎上的谷歌地圖演示的源代碼。文件HeatmapsDemoActivity.java包含readItems()這個定義。您可以通過點擊these instructions「下載zip文件」下載地圖utils的和演示或source file在GitHub的看線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; 
}