【问题标题】:Android Google Map: Dynamic Map zoom Level vs Static Map Zoom LevelAndroid Google Map:动态地图缩放级别与静态地图缩放级别
【发布时间】:2018-10-12 16:30:49
【问题描述】:

我必须使用谷歌动态地图来搜索位置、滚动、缩放等,然后对地图进行截图。由于许可限制,我无法截取屏幕截图(GMap.Snapshot(this))。所以决定从google静态地图下载一张图片

当用户想要从地图动态模式切换到静态地图时,他点击一个按钮,我获取中心纬度和经度,缩放级别和地图大小(它是 xamarin android)

        {
            CenterLatLng = new double[] { GMap.CameraPosition.Target.Latitude, GMap.CameraPosition.Target.Longitude },
            ZoomLevel = (int)GMap.CameraPosition.Zoom,
            Type = GMap.MapType,
            MapSize = new int[] { MapFragment.View.MeasuredWidth, MapFragment.View.MeasuredHeight }
        };

使用此参数我将尝试下载静态地图

        int scale = 2;
        var url = $"https://maps.googleapis.com/maps/api/staticmap?center={myobject.CenterLatLng[0]},{myobject.CenterLatLng[1]}&zoom={myobject.ZoomLevel}&size={myobject.MapSize[0] / scale}x{myobject.MapSize[1] / scale}&scale={scale}&maptype=satellite&format=png&key=xxxxxxxx";

但下载的静态地图似乎与动态地图具有不同的缩放比例

Here a screenshot of the Dynamic Map displayed before than switching to Static map

Here a screenshot of the Static Map displayed after

如何解决动态地图缩放和静态地图缩放之间的差异?

【问题讨论】:

    标签: android google-maps xamarin.android maps


    【解决方案1】:

    如何解决动态地图缩放和静态地图缩放之间的差异?

    我认为问题是由您在 url size={myobject.MapSize[0] / scale}x{myobject.MapSize[1] / scale} 中设置的大小引起的。 您可以创建一个新变量来划分MapSize,而不是使用scale 来更改大小。

    【讨论】:

    • 我有多少可以划分 MapSize?我发现了一个解决方案缩放到 512 sketchbkgmap.MapSize = new int[] { width, height }; var mapBmpScale = Math.Min(512f / 宽度, 512f / 高度); var url = $"maps.googleapis.com/maps/api/staticmap?........&size={(int)(width * mapBmpScale)}x{(int)(height * mapBmpScale)}.......
    • 它工作得很好,但在极少数情况下,静态地图与我在动态地图中看到的不同
    猜你喜欢
    • 1970-01-01
    • 2017-01-14
    • 1970-01-01
    • 2012-09-08
    • 1970-01-01
    • 2023-03-09
    • 2011-09-12
    • 1970-01-01
    相关资源
    最近更新 更多