【问题标题】:Could not find class 'com.google.maps.android.heatmaps.HeatmapTileProvider$Builder'找不到类“com.google.maps.android.heatmaps.HeatmapTileProvider$Builder”
【发布时间】: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


    【解决方案1】:

    事实证明,您需要确保已在属性选项卡下将 google play 服务和 google util 库作为库添加到您的项目中。教程没有展示这一点,只展示了如何将播放服务作为库添加到 utils

    【讨论】:

      【解决方案2】:

      在线说明对我不起作用,我使用了以下步骤:

      1. 在 Main Application > 选择项目属性 > 转到 Java Build Path > Add Jars > 选择 Library 的 bin 文件夹 > 选择 library.jar
      2. 在库项目中 > 选择项目属性 > Android > 检查 isLibrary
      3. 在 MainApplication > 选择项目属性 > 转到 Android > 在 Library 部分添加对 Library 的引用。

      我在stackoverflow中找到了这个步骤,但我没有找到链接。

      【讨论】:

        【解决方案3】:

        导入库,进入项目属性,进入android,然后检查“是库”添加app_compact,然后进入库属性,进入android工具并添加支持库!然后将库(播放服务库和地图实用程序库)添加到您的 demo_project,这对我有用:)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-05-14
          • 1970-01-01
          • 2019-08-22
          • 1970-01-01
          • 2023-03-15
          • 2013-03-23
          • 2012-02-22
          相关资源
          最近更新 更多