【发布时间】:2014-03-10 03:21:32
【问题描述】:
我正在按照 google 的说明在 android 中构建地图,到目前为止我已经成功了。
但是,当我尝试添加带有几个 lat lng 的热图时,应用程序失败并且我收到以下错误消息
Could not find class 'com.google.maps.android.heatmaps.HeatmapTileProvider$Builder', referenced from method com.example.heatmap.MainActivity.addHeatMap
我到处搜索,但找不到解决方案。根据在线说明,正确添加了 Utils 库和 google play 服务。谁能告诉我我在这里做错了什么。
对于 Clarity,地图工作正常,但当我调用 heatmap 方法时,应用程序失败。
package com.example.heatmap;
import java.util.ArrayList;
import java.util.List;
import org.json.JSONObject;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.UiSettings;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.Marker;
import com.google.android.gms.maps.model.MarkerOptions;
import com.google.android.gms.maps.model.TileOverlay;
import com.google.android.gms.maps.model.TileOverlayOptions;
import com.google.maps.android.heatmaps.HeatmapTileProvider;
/**
* This shows how to create a simple activity with a map and a marker on the map.
* <p>
* Notice how we deal with the possibility that the Google Play services APK is not
* installed/enabled/updated on a user's device.
*/
public class MainActivity extends FragmentActivity {
/**
* Note that this may be null if the Google Play services APK is not available.
*/
private GoogleMap mMap;
static final LatLng Ireland = new LatLng(53.5056, -7.8289);
static final LatLng IrelandCenter = new LatLng(53.4026137,-7.969749234);
private UiSettings Settings;
private JSONObject testjson = new JSONObject();
private static String file = "sample_locations.json";
private HeatmapTileProvider mProvider;
private TileOverlay mOverlay;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SupportMapFragment mapFragment =
(SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
if (savedInstanceState == null) {
// First incarnation of this activity.
mapFragment.setRetainInstance(true);
} else {
// Reincarnated activity. The obtained map is the same map instance in the previous
// activity life cycle. There is no need to reinitialize it.
mMap = mapFragment.getMap();
}
setUpMapIfNeeded();
}
@Override
protected void onResume() {
super.onResume();
setUpMapIfNeeded();
}
private void setUpMapIfNeeded() {
// Do a null check to confirm that we have not already instantiated the map.
if (mMap == null) {
// Try to obtain the map from the SupportMapFragment.
mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map))
.getMap();
// Check if we were successful in obtaining the map.
if (mMap != null) {
setUpMap();
locateMapIreland();
createMarker();
addHeatMap();
}
}
}
/**
* This is where we can add markers or lines, add listeners or move the camera. In this case, we
* just add a marker near Africa.
* <p>
* This should only be called once and when we are sure that {@link #mMap} is not null.
*/
private void setUpMap() {
mMap.setMyLocationEnabled(true);
mMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
Settings = mMap.getUiSettings();
Settings.setRotateGesturesEnabled(false);
Settings.setZoomGesturesEnabled(true);
Settings.setCompassEnabled(true);
}
private void locateMapIreland(){
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(IrelandCenter,7));
}
private void createMarker(){
Marker testMarker = mMap.addMarker(new MarkerOptions()
.position(Ireland)
.draggable(true)
.title("Title text")
.snippet("Snippet text")
.flat(false));
testMarker.showInfoWindow();
}
private void addHeatMap() {
List<LatLng> list = new ArrayList<LatLng>();
LatLng one = new LatLng(53.998,-8.624);
list.add(one);
LatLng two = new LatLng(52.443,-8.988);
list.add(two);
LatLng three = new LatLng(52.286,-8.319);
list.add(three);
LatLng four = new LatLng(54.162,-8.253);
list.add(four);
LatLng five = new LatLng(53.364,-6.453);
list.add(five);
List <LatLng> listTwo = null;
// Get the data: latitude/longitude positions of police stations.
// 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));
}
}
【问题讨论】:
标签: android eclipse google-maps-api-2