我正在尝试使用 here提到的API获取Google Maps V2地图的屏幕截图,但这似乎总是返回底部带有Google徽标的白色图片.如果它不是徽标,我会确定这根本不起作用,但徽标意味着发生了一些事情并且地图没有显示.这大致就是我正在做的事情:
mv.setVisibility(View.VISIBLE);
mv.getMap().snapshot(new GoogleMap.SnapshotReadyCallback() {
    public void onSnapshotReady(Bitmap snapshot) {
        synchronized(finished) {
            finished[0] = snapshot;
            finished.notify();
        }
    }
});

我尝试了多种不同的方法,包括将图像绘制到不同的图像和各种其他尝试.

唯一的主要区别是我使用MapView而不是MapFragment,因为我在这里无法切换到使用片段的一些技术问题.

解决方法

要拍摄快照,您需要等待地图加载然后拍摄快照.

细节:
实现SnapshotReadyCallback和OnMapLoadedCallback.

import com.google.android.gms.maps.GoogleMap.SnapshotReadyCallback;
import com.google.android.gms.maps.GoogleMap.OnMapLoadedCallback;

public class KmlReader extends ActionBaractivity implements
     SnapshotReadyCallback,OnMapLoadedCallback {

if (mMap == null) {
// Try to obtain the map from the SupportMapFragment.
// mMap = mMapFragment.getMap();
// // Check if we were successful in obtaining the map.

// Try to obtain the map from the SupportMapFragment.
mMap = ((SupportMapFragment) getSupportFragmentManager()
        .findFragmentById(R.id.map)).getMap();
// use the settings maptype

// Check if we were successful in obtaining the map.
if (mMap != null) {

mMap.setonMapLoadedCallback(this);

@Override
public void onMapLoaded() {
   if (mMap != null) {
        mMap.snapshot(this);
   }
}

当它触发时你有一个真正的位图.

@Override
public void onSnapshotReady(Bitmap bm) {
    if (CheckStorage.isExternalStorageWritable()) {
        int newHeight = 96;
        int newWidth = 96;

        int width = bm.getWidth();

        int height = bm.getHeight();

        float scaleWidth = ((float) newWidth) / width;

        float scaleHeight = ((float) newHeight) / height;

        // create a matrix for the manipulation

        Matrix matrix = new Matrix();

        // resize the bit map

        matrix.postScale(scaleWidth,scaleHeight);

        // recreate the new Bitmap

        Bitmap resizedBitmap = Bitmap.createBitmap(bm,width,height,matrix,false);

android – GoogleMap快照方法返回白色图像的更多相关文章

  1. ios – 谷歌地图SDK – 路径不准确

    我试图显示两个位置之间的路径,但它不准确.这是我得到的道路:如您所见,蓝线(路径)不会到达目的地.如何解决这个问题?

  2. android – 无法获得连接工厂客户端 – 与谷歌地图战斗

    另一天另一个问题,我终于设法在我的Android应用程序上设置正确的谷歌地图,或者至少我以为我已经完成了它,整个程序开始,它甚至调用应该“打印”地图的类,但是我唯一能看到的是一个带有谷歌标签的网格[在角落里].我检查了dalvik监视器和错误E/MapActivity(394):Couldn’tgetconnectionfactoryclient发生.我已经在stackoverflow网站上找到了

  3. Android – 无需在地图api v2中保存即可拖动标记

    我正在我的应用程序中实现一项功能,允许用户在地图上手动定位自己.所以我用一个引脚来表示它们的位置,让用户将它拖到它们当前所在的位置.简单的解决方案是在标记上使用setDraggable,但这需要用户将标记保持3或5秒,直到它可拖动为止.我认为这对许多用户来说使用该功能非常困惑.所以,我想要的是通过让用户立即拖动它们而不必暂时拖动它来使拖动更具响应性–就像Foursquare的做法一样!

  4. 在android上没有使用地图对象的关闭位置列表

    我正在制作一个Android应用程序,需要检查用户是否接近感兴趣的地方,例如电影院.但是我不需要用户看到我认为需要使用googleplacesapi的地图.我做了一些研究,但不知道如何在Android上实现这一点.任何提示解决方法看到附近的景点,1.-使用谷歌地图的附近搜索请求,linkhere2.-使用电话坐标,获取附近的电影院列表……

  5. android – map.setmylocationenabled(true)不工作

    我在我的Android应用中使用谷歌地图.我需要将地图重新定位到客户端的当前位置.我使用了以下声明–这会在右上方显示一个按钮,但单击该按钮不起作用.按钮单击侦听器:解决方法只需从myotheranswerhere获取代码,然后修改按钮单击侦听器以请求其他位置:然后onLocationChanged()中的代码将重新定位摄像机位置,然后再次注册位置更新:

  6. Android:以编程方式访问已保存的Google位置

    谷歌地图允许保存最喜欢的位置以便以后访问…见here.在需要输入位置的Android中,如果存在API以使用户能够从他们已经保存的喜爱位置中进行选择,那将是简洁的.通过选择器对话框或类似的东西.我找不到这样的API……

  7. 将地图标记设置为自定义颜色Android

    我正在制作一个应用程序,可以在某些点添加地图.我希望我的针脚的颜色与我们的应用程序的主题颜色相匹配.对不起,我真的是个菜鸟.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.color)));不起作用.它不允许我在这里插入自定义颜色.我怎样才能做到这一点?谢谢:)解决方法defaultMarker()方法允许设置自

  8. android – 如何将LatLng实例发送到新意图

    我需要将LatLng类的实例传递给另一个intent.我该怎么办?这是代码.请帮帮我.路线类:这是我的路线课.我不知道这个问题.帮帮我吧它似乎发送捆绑很好,但收到它时出错.解决方法使用putParcelable方法将LatLng对象附加到Bundle:现在将它附加到您的意图:要在新活动中获取它:

  9. android – osmdroid,Maps API v2和片段

    好.你会认为这会相对简单,但不是.我在我的网站上使用Open街道地图,因为数据可以免费使用,编辑和更新–我的项目遵循这个咒语,除了googlesAPI使用限制/保存数据限制,谷歌地图根本不适合我..至少在网上.鉴于此,我以为我会跟随我的Android应用程序,所以我设置osmdroid利用开放的街道地图数据.我可以在我的活动中有一个很好的地图..我也遵循一个教程,它似乎至少工作,我可以在tabho

  10. android – GoogleMap快照方法返回白色图像

    当它触发时你有一个真正的位图.

随机推荐

  1. bluetooth-lowenergy – Altbeacon库无法在Android 5.0上运行

    昨天我在Nexus4上获得了Android5.0的更新,并且altbeacon库停止了检测信标.似乎在监视和测距时,didEnterRegion和didRangeBeaconsInRegion都没有被调用.即使RadiusNetworks的Locate应用程序现在表现不同,一旦检测到信标的值,它们就不再得到更新,并且通常看起来好像信标超出了范围.我注意到的一点是,现在在logcat中出现以下行“B

  2. android – react-native动态更改响应者

    我正在使用react-native进行Android开发.我有一个视图,如果用户长按,我想显示一个可以拖动的动画视图.我可以使用PanResponder实现这一点,它工作正常.但我想要做的是当用户长按时,用户应该能够继续相同的触摸/按下并拖动新显示的Animated.View.如果您熟悉Google云端硬盘应用,则它具有类似的功能.当用户长按列表中的任何项目时,它会显示可拖动的项目.用户可以直接拖

  3. android – 是否有可能通过使用与最初使用的证书不同的证书对其进行签名来发布更新的应用程序

    是否可以通过使用与最初使用的证书不同的证书进行签名来发布Android应用程序的更新?我知道当我们尝试将这样的构建上传到市场时,它通常会给出错误消息.但有没有任何出路,比如将其标记为主要版本,指定市场中的某个地方?解决方法不,你不能这样做.证书是一种工具,可确保您是首次上传应用程序的人.所以总是备份密钥库!

  4. 如何检测Android中是否存在麦克风?

    ..所以我想在让用户访问语音输入功能之前检测麦克风是否存在.如何检测设备上是否有麦克风.谢谢.解决方法AndroidAPI参考:hasSystemFeature

  5. Android – 调用GONE然后VISIBLE使视图显示在错误的位置

    我有两个视图,A和B,视图A在视图B上方.当我以编程方式将视图A设置为GONE时,它将消失,并且它正下方的视图将转到视图A的位置.但是,当我再次将相同的视图设置为VISIBLE时,它会在视图B上显示.我不希望这样.我希望视图B回到原来的位置,这是我认为会发生的事情.我怎样才能做到这一点?编辑–代码}这里是XML:解决方法您可以尝试将两个视图放在RelativeLayout中并相对于彼此设置它们的位置.

  6. android – 获得一首歌的流派

    我如何阅读与歌曲相关的流派?我可以读这首歌,但是如何抓住这首歌的流派,它存放在哪里?解决方法检查此代码:

  7. android – 使用textShadow折叠工具栏

    我有一个折叠工具栏的问题,在展开状态我想在文本下面有一个模糊的阴影,我使用这段代码:用:我可以更改textColor,它可以工作,但阴影不起作用.我为阴影尝试了很多不同的值.是否可以为折叠文本投射阴影?

  8. android – 重用arm共享库

    我已经建立了armarm共享库.我有兴趣重用一个函数.我想调用该函数并获得返回值.有可能做这样的事吗?我没有任何头文件.我试过这个Android.mk,我把libtest.so放在/jni和/libs/armeabi,/lib/armeabi中.此时我的cpp文件编译,但现在是什么?我从objdump知道它的名字编辑:我试图用这个android.mk从hello-jni示例中添加prebuild库:它工作,但libtest.so相同的代码显示以下错误(启动时)libtest.so存在于libhello-j

  9. android – 为NumberPicker捕获键盘’Done’

    我有一个AlertDialog只有一些文本,一个NumberPicker,一个OK和一个取消.(我知道,这个对话框还没有做它应该保留暂停和恢复状态的事情.)我想在软键盘或其他IME上执行“完成”操作来关闭对话框,就像按下了“OK”一样,因为只有一个小部件可以编辑.看起来处理IME“Done”的最佳方法通常是在TextView上使用setonEditorActionListener.但我没有任何Te

  10. android – 想要在调用WebChromeClient#onCreateWindow时知道目标URL

    当我点击一个带有target=“_blank”属性的超链接时,会调用WebChromeClient#onCreateWindow,但我找不到新的窗口将打开的新方法?主页url是我唯一能知道的东西?我想根据目标网址更改应用行为.任何帮助表示赞赏,谢谢!

返回
顶部