【问题标题】:Casting issue when trying to create a HeatMap using Google API on android studio尝试在 android studio 上使用 Google API 创建 HeatMap 时出现投射问题
【发布时间】:2017-01-25 12:48:33
【问题描述】:

我正在尝试使用 google api 创建热图,但遇到了一个小问题。

这里是示例代码:

 mProvider = new HeatmapTileProvider.Builder()
                    .weightedData((Collection<WeightedLatLng>) weightedList)
                    .gradient(gradient);
         mOverlay = mMap.addTileOverlay(new TileOverlayOptions().tileProvider((TileProvider) mProvider));// this is the line of code that produces the error
    }

特别是,该行中的参数“mProvider”被突出显示。

错误日志是:

java.lang.ClassCastException: com.google.maps.android.heatmaps.HeatmapTileProvider$Builder cannot be cast to com.google.android.gms.maps.model.TileProvider

【问题讨论】:

标签: java android google-maps


【解决方案1】:

如果您正确设置了依赖项,您应该可以正常工作。而且你应该不需要考虑铸造。因为在文档中,您的代码应该是。

      mOverlay = mMap.addTileOverlay(new TileOverlayOptions().tileProvider(mProvider));

我的问题(相差几年,是 Kotlin,不是 Java,但仍然是 gradle 问题而不是代码:)是这个依赖

implementation 'com.google.maps.android:maps-v3-ktx:2.2.0' 

一个正常工作的是

implementation 'com.google.maps.android:maps-ktx:2.3.0'

【讨论】:

    【解决方案2】:

    您忘记调用.build() 方法。
    就像你想造一辆汽车,像Car car = new CarFactory().type(SEDAN).color(BLACK); 一样,忘记告诉carFactory 造汽车。这会导致您尝试将 carFactory 分配给 Car 变量。
    您的代码应如下所示:

     mProvider = new HeatmapTileProvider.Builder()
                    .weightedData((Collection<WeightedLatLng>) weightedList)
                    .gradient(gradient)
                    .build(); //missing this line
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-24
      • 2018-05-17
      • 2016-09-19
      • 2019-04-19
      • 2022-01-14
      • 1970-01-01
      • 2016-12-11
      • 2011-05-29
      相关资源
      最近更新 更多