2016-09-20 11 views
1

Googleマップユーティリティライブラリを使用してヒートマップポイントをアンドロイドに表示しようとしていますが、地図上に何も表示されません。私は別のものが必要かどうかわかりません。私は例を見ましたが、私の場合はうまくいきません。私は断片を使用しています。ヒートマップがフラグメントに表示されない

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

} 

答えて

0

Heatmaps guideを確認しても問題はありません。 clearTileCache()に電話をかけてください。API referenceには、setRadiusの後に電話をかけてください。

+0

答えをいただきありがとうございます.Markerも表示されず、Camera Positionが機能しないことに気付きました。マップ設定に問題があると思います。 私は何が間違っているのか分かりません。 –

関連する問題