使用谷歌地图api在android studio中创建热图

时间:2018-03-24 14:51:29

标签: android android-studio google-maps-api-3 heatmap

我最近在android studio中使用google maps API创建了一个带有热图的Android应用程序。我用下面的代码来创建渐变。我得到了显示正方形的结果?为什么我得到了那个结果?需要帮助。

int[] colors = {
        Color.GREEN,    // green
        Color.YELLOW,    // yellow
        Color.rgb(255,165,0), //Orange
        Color.RED,              //red
        Color.rgb(153,50,204), //dark orchid
        Color.rgb(165,42,42) //brown
};

float[] startpoints = {
        0.0f,    //0-50
        0.1f,   //51-100
        0.2f,   //101-150
        0.3f,   //151-200
        0.4f,    //201-300
        0.6f      //301-500
};


private ArrayList addheatmap() {
    ArrayList<WeightedLatLng> arr = new ArrayList<>();

    arr.add(new WeightedLatLng(new LatLng(9.9252, 78.119),10)); //madurai
    arr.add(new WeightedLatLng(new LatLng(10.7905, 78.7047),60)); //trichy
    arr.add(new WeightedLatLng(new LatLng(13.0827, 80.2707),180)); //chennai
    arr.add(new WeightedLatLng(new LatLng(11.0168, 76.9558),270)); //coimbatore
    arr.add(new WeightedLatLng(new LatLng(11.7863, 77.8008),380));
    arr.add(new WeightedLatLng(new LatLng(11.7480, 79.7714),190));
    arr.add(new WeightedLatLng(new LatLng(8.7642, 78.1348),299));
    arr.add(new WeightedLatLng(new LatLng(11.6643, 78.1460),398));

    Log.e("adding heatmap","yes");

    return arr;
}


private void buildheatmap(){

    Gradient gradient = new Gradient(colors,startpoints);
    heatmapTileProvider = new HeatmapTileProvider.Builder()
            .weightedData(addheatmap())
            .radius(20)
            .gradient(gradient)
            .build();
    TileOverlayOptions tileoverlayoptions = new TileOverlayOptions().tileProvider(heatmapTileProvider);
    TileOverlay tileoverlay = googleMap.addTileOverlay(tileoverlayoptions);
    tileoverlay.clearTileCache();
    Toast.makeText(this,"added heatmap",Toast.LENGTH_SHORT).show();
}

Screenshot of App output

我使用上面的colors array和startpoints数组为HeatMapTileProvider创建渐变。 为什么我会像结构那样变成方形,怎么做才能让它们成为像结构一样的圆圈?谢谢你

1 个答案:

答案 0 :(得分:0)

如果您将起点数组从0.05f(或一些很小的数字)而不是0开始,它将消除热图的垂直度。