2016-09-20 2 views
1

Ich versuche, Heatmap-Punkte in Android mit Google Maps Utility-Bibliothek anzuzeigen, nichts wird auf der Karte angezeigt. Ich weiß nicht, ob ich etwas anderes brauche, ich habe mir Beispiele angesehen, aber in meinem Fall funktioniert es nicht. Ich benutze Fragmente.Heat Maps werden nicht im Fragment angezeigt

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

} 

Antwort

0

Überprüfung der Heatmaps guide, ich sehe keine Probleme darüber. Versuchen Sie clearTileCache() anzurufen, es ist in API reference angegeben, dass Sie es nach setRadius anrufen sollten.

+0

Danke für die Antwort, ich habe bemerkt, dass der Marker auch nicht angezeigt wird und die Kameraposition nicht funktioniert, ich denke, dass ich ein Problem mit der Karteneinrichtung habe. Ich weiß nicht, was falsch ist. –

Verwandte Themen