Android谷歌地图显示为图片

tzu*_*uvy 14 android google-maps imageview android-imageview

我在我的Android应用程序中实现了Google Maps V2,现在我想做一些不同的事情.我用标记显示位置(经度,纬度).问题是这在我的活动中显示为Map.我想将它显示为ImageView,只有当有人点击它时才显示地图界面.

基本上我想做的是静态预览位置并将其显示为图片(带框架和圆角)点击后打开地图并提供所有功能.

有没有办法将地图片段放入ImageView?

您可以提供的任何帮助将非常感谢.

谢谢

Sim*_*mas 19

您可以使用Google Maps内置快照方法捕获预览并将其显示在ImageView.您可以ImageView以任何您喜欢的方式设置样式,并在单击预览时设置clickListener,它可以执行某些操作.这是一个例子:

LatLng latLng = new LatLng(35.0116363, 135.7680294);
// Add Marker
mMap.addMarker(new MarkerOptions().position(latLng));
// Center map on the marker
CameraUpdate yourLocation = CameraUpdateFactory.newLatLngZoom(latLng, 4.0f);
mMap.animateCamera(yourLocation);

final ImageView mapPreview = (ImageView) findViewById(R.id.mapPreview);
mapPreview.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        // Hide the preview, to reveal the map
        mapPreview.setImageBitmap(null);
        mapPreview.setLayoutParams(new RelativeLayout.LayoutParams(0, 0));

        // Or start Google Maps app
//      String uri = String.format(Locale.ENGLISH, "geo:%f,%f", 50.0, 0.1);
//      Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
//      startActivity(intent);
    }
});

mMap.setOnMapLoadedCallback(new GoogleMap.OnMapLoadedCallback() {
    @Override
    public void onMapLoaded() {
        // Make a snapshot when map's done loading
        mMap.snapshot(new GoogleMap.SnapshotReadyCallback() {
            @Override
            public void onSnapshotReady(Bitmap bitmap) {
                mapPreview.setLayoutParams(new RelativeLayout.LayoutParams(
                        ViewGroup.LayoutParams.MATCH_PARENT,
                        ViewGroup.LayoutParams.MATCH_PARENT));
                mapPreview.setImageBitmap(bitmap);

                // If map won't be used afterwards, remove it's views
//              ((FrameLayout)findViewById(R.id.map)).removeAllViews();
            }
        });
    }
});
Run Code Online (Sandbox Code Playgroud)

  • 如何初始化mMap对象?我知道它是一个 GoogleMap 类型对象,但是如何初始化它? (2认同)

mat*_*ash 17

只要您的应用可以使用网络,就会有一个稍微不同的选项可以达到相同的结果并且只需要很少的编码:您可以调用Google Static Maps API来请求具有任意中心,缩放级别,大小和其他功能,如标记和路径.

例如链接:

https://maps.googleapis.com/maps/api/staticmap?center=40.714728,-73.998672&zoom=14&size=600x300

生成以下图像:

在此输入图像描述

这使得在ImageView窗口小部件中显示地图变得非常容易:您只需要根据位置数据和尺寸构建适当的URL,然后使用任何图像加载框架(如Picasso,Volley和c)显示图像.我们现在已经使用这个功能几年了.

这在显示ListView一些小地图时特别有用.在这些情况下,要求n个快照会有问题,而n个图像下载应该可以正常工作.


根据此公告,第三个选项将在下周左右推出,它是新的精简版地图模式,将作为Google Play Services 6.5的一部分发布:

此外,还有一个新的"精简版模式"地图选项,非常适合要提供一些更小的地图,或者地图是如此之小,有意义的互动是不切实际的,比如在列表中的缩略图的情况.精简模式映射是指定位置和缩放级别的地图的位图图像.

在lite模式下,标记和形状在客户端绘制在静态图像的顶部,因此您仍然可以完全控制它们.精简模式支持所有地图类型,"我的位置"图层以及完全交互式地图的功能子集.

如果您可以等待几天更新的SDK,那听起来就像您需要的那样.:)

  • googlemap静态api需要计费,不是免费的 (2认同)