java - 热图未以 fragment 形式显示

标签 java android google-maps android-fragments heatmap

我正在尝试使用谷歌地图实用程序库在android中显示热图点, map 上没有显示任何内容。我不知道我是否需要其他东西,我看过一些例子,但就我而言它不起作用。我正在使用 fragment 。

public class MapFragment extends Fragment {


MapView mMapView;
private GoogleMap googleMap;
private HeatmapTileProvider mProvider;
protected LatLng mCenterLocation = new LatLng( 39.7392, -104.9903 );

public MapFragment() {
    // Required empty public constructor
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View rootView = inflater.inflate(R.layout.fragment_map, container, false);

    mMapView = (MapView) rootView.findViewById(R.id.mapView);
    mMapView.onCreate(savedInstanceState);
    mMapView.onResume(); // needed to get the map to display immediately
    try {
        MapsInitializer.initialize(getActivity().getApplicationContext());
    } catch (Exception e) {
        e.printStackTrace();
    }

    mMapView.getMapAsync(new OnMapReadyCallback() {
        @Override
        public void onMapReady(GoogleMap mMap) {
            googleMap = mMap;

            // For showing a move to my location button
            if (ActivityCompat.checkSelfPermission(getActivity(), android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(getActivity(), android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
                // TODO: Consider calling
                //    ActivityCompat#requestPermissions
                // here to request the missing permissions, and then overriding
                //   public void onRequestPermissionsResult(int requestCode, String[] permissions,
                //                                          int[] grantResults)
                // to handle the case where the user grants the permission. See the documentation
                // for ActivityCompat#requestPermissions for more details.
                return;
            }
            googleMap.setMyLocationEnabled(true);

            // For dropping a marker at a point on the Map
            LatLng colorado = new LatLng(39.7392, -104.9903);
            googleMap.addMarker(new MarkerOptions().position(colorado).title("Marker Title").snippet("Marker Description"));

            // For zooming automatically to the location of the marker
            CameraPosition cameraPosition = new CameraPosition.Builder().target(colorado).zoom(12).build();
            googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));

            addHeatMap();

        }
    });




    return rootView;
}


public void addHeatMap(){
    ArrayList<LatLng> locations = generateLocations();
    mProvider = new HeatmapTileProvider.Builder().data(locations).build();
    mProvider.setRadius(HeatmapTileProvider.DEFAULT_RADIUS );
    googleMap.addTileOverlay(new TileOverlayOptions().tileProvider(mProvider));
}

private ArrayList<LatLng> generateLocations() {
    ArrayList<LatLng> locations = new ArrayList<LatLng>();
    double lat;
    double lng;
    Random generator = new Random();
    for (int i = 0; i < 1000; i++) {
        lat = generator.nextDouble() / 3;
        lng = generator.nextDouble() / 3;
        if (generator.nextBoolean()) {
            lat = -lat;
        }
        if (generator.nextBoolean()) {
            lng = -lng;
        }
        locations.add(new LatLng(mCenterLocation.latitude + lat, mCenterLocation.longitude + lng));
    }

    return locations;
}

@Override
public void onResume() {
    super.onResume();
    mMapView.onResume();
}

@Override
public void onPause() {
    super.onPause();
    mMapView.onPause();
}

@Override
public void onDestroy() {
    super.onDestroy();
    mMapView.onDestroy();
}

@Override
public void onLowMemory() {
    super.onLowMemory();
    mMapView.onLowMemory();
}

}

最佳答案

检查Heatmaps guide ,我没有看到任何相关问题。尝试调用 clearTileCache(),它在 API reference 中指示。您应该在 setRadius 之后调用它。

关于java - 热图未以 fragment 形式显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39589597/

相关文章:

java - 使用java WebView的谷歌地图API中的奇怪字符

Java防止jar文件中的证书文件(manifest)被篡改

java - 在选项卡式 Activity 中启用和禁用搜索操作

ios - 允许在使用 iOS Google Maps SDK 设置方位动画时捏合缩放

Java - 需要将日期字符串更改为日期,但应用偏移量

android - registerForActivityResult 是否可以像 ACTION_CHOOSER 一样执行

java - 谷歌 API key 不适用于 Android

java - 生成 Lucene segments_N 文件

Java 嵌套 for 循环(内部 for 循环中有 if 语句)

java - Hibernate Envers 不使用 SpringMVC 配置在审计表中写入任何内容