小编Dev*_*oid的帖子

在Google Maps Android V2中群集大量标记时的最佳做法

我想在Google Map上显示大量标记(50k +).事实证明,Android Maps Util Library https://github.com/googlemaps/android-maps-utils似乎是群集标记时的首选.

我想知道是否存在任何最佳实践,以便在显示如此大量的标记时提高地图用户体验的性能.

例如,我使用群集管理器向群集管理器添加大约20.000个标记,从而在缩放和平移地图时导致不太平滑的地图交互体验.

我用过的:

GridBasedAlgorithm<MyClusterItem> gridAlgorithm = new GridBasedAlgorithm<MyClusterItem>();     
mClusterManager.setAlgorithm(new PreCachingAlgorithmDecorator<MyClusterItem>(gridAlgorithm));
Run Code Online (Sandbox Code Playgroud)

我的策略:

1)在相机更改事件中从群集器中删除所有标记,然后仅添加视图边界内的那些标记.在高缩放级别上工作得很好,当缩放级别降低时,有许多标记要移除和添加,从而增加了整个聚类过程的开销

2)首先添加所有标记.

  • 100个标记=>效果很好
  • 1000 Markers => Works,但在缩小发生时已经显示出聚类过程中的缓慢
  • 10000个标记=>行为已经非常缓慢,需要很长时间才能重新聚类标记并且缩小放大不顺利
  • 20000 Markers =>重新聚类需要很长时间(> 20秒),地图没有响应

android markers markerclusterer google-maps-android-api-2

19
推荐指数
1
解决办法
5884
查看次数

透明的AppBarLayout和CollapsingToolbarLayout

我想实现以下布局:

  1. 映射为基本布局
  2. 在CollapsingToolbarLayout内部的透明窗口
  3. RecyclerView的内容

我列举了一个如何看待它的例子.

在此输入图像描述

我在Cheesesquare上关注了CollapsingToolbarLayout和AppBarLayout实现的这个很好的例子 .我设法让内容使用CollapsingToolbarLayout内的地图(在布局xml中注释掉),但这不是理想的结果.

但是我没有找到任何解决方案/文档来使灰色框(见中间的内部图像)在初始位置是透明的.我希望它是透明的,以便看到地图.当用户向上滚动时,CollapsingToolbarLaoyut应该正常工作并折叠透明窗口并显示工具栏.现在,图像看起来只是白色或我给它的任何颜色.我已经尝试将颜色设置为透明,但它没有达到预期的效果.

所以我的问题是:如何在初始阶段将"CollapsingToolbarLayout"设置为透明(参见图像第1层灰框)?

这是我的布局代码.CollapsingToolbarLayout效果很好,但我看不到下面的地图.如果有可能实施将会很棒.

 <android.support.design.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true">


    <!-- Layer 0 -->
    <FrameLayout
        android:id="@+id/overlayFragmentMap"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:elevation="0dip"
        />


    <!-- Layer 1 -->
    <android.support.design.widget.AppBarLayout
        android:id="@+id/appbar"
        android:layout_width="match_parent"
        android:layout_height="192dp"
        android:fitsSystemWindows="true"
        android:theme="@style/CustomActionBar">
        <!--android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar-->

        <android.support.design.widget.CollapsingToolbarLayout
            android:id="@+id/collapsing_toolbar"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:fitsSystemWindows="true"
            app:contentScrim="?attr/colorAccent"
            app:expandedTitleMarginBottom="32dp"
            app:expandedTitleMarginEnd="64dp"
            app:expandedTitleMarginStart="48dp"
            app:expandedTitleTextAppearance="@color/black"
            app:layout_scrollFlags="scroll|exitUntilCollapsed">


            <!-- Map view inside here works perfectly but is not
            the deisired result -->
            <!--
            <FrameLayout
                android:id="@+id/overlayFragmentMap"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:elevation="0dip"
                app:layout_collapseMode="parallax"
                />
            -->

            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                android:background="@drawable/transparent" …
Run Code Online (Sandbox Code Playgroud)

android transparent android-layout android-collapsingtoolbarlayout

16
推荐指数
1
解决办法
2万
查看次数

flavorDimensions gradle错误 - Android Studio 3.0 Canary 1

我想将我的项目升级到Android Studio 3.0 Canary 1和gradle:3.0.0-alpha1插件,但是我对包含项目的正确风味定义有疑问.

我按照Google的官方迁移指南进行了操作:https://developer.android.com/studio/preview/features/new-android-plugin-migration.html

在我的主应用程序build.gradle中,我按照迁移指南的建议定义了"myflavor" flavorDimensions:

android {
    flavorDimensions "myflavor"

    productFlavors {
        dev {
            dimension "myflavor"
            minSdkVersion 21
        }
        prod {
            dimension "myflavor"
            minSdkVersion 16
        }
    }

    buildTypes {
        debug {
            signingConfig signingConfigs.debug
        }

        release {
            debuggable false

            signingConfig signingConfigs.release

            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
}

dependencies {
    compile project(':util')
}
Run Code Online (Sandbox Code Playgroud)

在我的included:util模块(生产者)中,我尝试在没有flavorDimensions,productFlavors和buildTypes定义的情况下包含它.我收到以下gradle错误:

Error:Could not resolve all dependencies for configuration ':app:prodDebugCompileClasspath'.
  Cannot choose between the following configurations on project :util:
    - debugApiElements
    - releaseApiElements …
Run Code Online (Sandbox Code Playgroud)

android android-studio android-gradle-plugin

16
推荐指数
2
解决办法
8871
查看次数

Android Maps V2上的模糊自定义图块

我想在Google Maps V2上显示CustomOverlay.瓷砖的装载按预期工作,唯一的是,所显示的瓷砖看起来并不尖锐,有点模糊.谷歌没有让我得到一个有用的答案.

我采用了为TileProvider添加经典256px x 256px磁贴的方法.我设法获得了一个图像为@ 2x(视网膜)的图像源,这使得整个视觉体验更加清晰,但我宁愿不使用此源,因为数据传输速率高四倍,因此无法在移动设备上使用设备和慢速的互联网速度.

我包含了渲染地图的两个不同示例(屏幕截图),两个都具有相同的配置(OSM - 256x256磁贴)和提供的TileProviderOsm.一个是Galaxy Nexus,另一个是Nexus 5手机.两者看起来都不正确.

知道我能做些什么来防止模糊或增加锐度?

我的TileProvider如下所示:

 public class TileProviderOsm extends UrlTileProvider {

    private static final String MAP_URL = "http://tile.openstreetmap.org/%d/%d/%d.png";

    private static int TILE_WIDTH  = 256;
    private static int TILE_HEIGHT = 256;

    public static int MIN_ZOOM = 7;
    public static int MAX_ZOOM = 15;

    public TileProviderOsm() {
        super(TILE_WIDTH, TILE_HEIGHT);
    }

    @Override
    public synchronized URL getTileUrl(int x, int y, int zoom) {

        String s = String.format(Locale.US, MAP_URL, zoom, x, y);
        URL url = null; …
Run Code Online (Sandbox Code Playgroud)

android google-maps openstreetmap google-maps-api-2

4
推荐指数
2
解决办法
2192
查看次数