2017-01-23 27 views
0

我正在使用android studio在Google地圖上創建熱圖。我有一個數據庫包含以下信息:在Google地圖上使用langitutde,海拔高度和能量消耗實現熱圖

longitude latitude Electricity Energy Consumption 
1 -77.08527 38.7347905 4.742112594 
2 -19.03592 34.8081915 4.742112594 
3 -74.04591 12.8815925 5.278542493 
4 -32.05547 25.9549935 12.270006486 
5 -49.06596 76.0283945 4.742112594 
6 -63.08492 20.1017955 4.742112594 

有什麼辦法把這些座標和大小和情節使用谷歌地圖的密度地圖?

我已經做了一些研究,並且google api確實允許創建heatmap,但它只允許包含coordiantes的數據集。我如何反映某些地區的能源消耗?

這是鏈接,告訴你如何創建一個熱圖網站:我只需要在正確的方向一推,能夠實現這個https://developers.google.com/maps/documentation/android-api/utility/heatmap

有,我想我可以使用下面的方法,但我沒有很瞭解它,希望也許有人可以解釋如何使用它,如果它可以使用這個來實現我的特殊情況:

這是從網站的代碼來實現熱圖只考慮座標:

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

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

這是從網站的代碼更改數據集:

ArrayList<WeightedLatLng> data = new ArrayList<WeightedLatLng>(); 
    mProvider.setData(data); 
    mOverlay.clearTileCache(); 

回答

0

代替LatLng,您可以使用WeightedLatLng

你的代碼應該是這樣的:

List<WeightedLatLng> 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() 
     .weightedData(list) 
     .build(); 
    // Add a tile overlay to the map, using the heat map tile provider. 
    mOverlay = mMap.addTileOverlay(new 

    TileOverlayOptions().tileProvider(mProvider)); 
} 

private List<WeightedLatLng> readItems(int resource) throws JSONException { 
    List<WeightedLatLng> list = new ArrayList<WeightedLatLng>(); 
    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"); 
     double magnitude = object.getDouble("mag" 
     list.add(new WeightedLatLng(lat, lng, magnitude)); 
    } 
    return list; 
} 
相關問題