【问题标题】:Allow zooming beond lvl. 22 in a Google Map允许缩放超过 lvl。 22 在谷歌地图上
【发布时间】:2014-01-13 18:13:56
【问题描述】:

我正在尝试在谷歌地图上叠加建筑平面图。然而,缩放级别 21 太小,无法显示室内细节。我需要变焦 23-26。

我尝试了如下设置:

var mapOptions = {
    zoom : 24,
            maxZoom: 26,
    center : new google.maps.LatLng(52.226071,20.950115),
    mapTypeId: google.maps.MapTypeId.SATELLITE,
};

但它不起作用。我得到了默认行为。

var mapOptions = {
    zoom : 22
            maxZoom: 26,
            minZoom: 22,
    center : new google.maps.LatLng(52.226071,20.950115),
    mapTypeId: google.maps.MapTypeId.SATELLITE,
};

这确实会强制放大,但我不能超过 22。

肯定有一些解决方案可以将平面图覆盖在地图上。 有什么想法吗?

【问题讨论】:

    标签: google-maps map zooming indoor-positioning-system


    【解决方案1】:

    内置 mapTypes 的 maxZoom 是预定义的(取决于 mapType 和位置)

    你可以做什么:
    使用custom mapType(您可以为它定义一个符合您要求的maxZoom)

    观察地图的 zoom_changed-event。何时缩放到达特定位置的maxZoom(在本例中为 21)从内置 mapType 切换到您的自定义 mapType(并在缩放低于 21 时切换回来)。

    【讨论】:

    • 我认为这解决了我的问题。如果我的平面图周围不是空白(我的自定义地图类型加载空白图块),而是缩放卫星图块,我会很酷,但这仍然足够好。
    【解决方案2】:

    我通过使用https://github.com/tilemapjp/ZoomTMSLayer 的修改版本得到了这个工作(尽管有一些错误)。我没有使用我自己的瓦片地图服务,而是使用了 Google 进行网络调用的相同 url。

    基本上你扩展了 google.maps.ImageMapType 并重新定义了 getTile() 和 getTileUrl() 方法。对于大于 Google 在该位置支持的最大缩放级别的任何缩放级别,请抓取 Google 在最大缩放时返回的图块,然后对其进行缩放并转换每个图块,使它们对齐。

    为了方便查看,我把代码放在了 Github:https://github.com/dallinski/GoogleMapsSuperZoomMapType

    【讨论】:

    • 我似乎遇到了提到的错误,因为在使用时,我经常在平移时左侧出现空瓷砖。我没有诊断这些问题的专业知识,如果能帮助解决这些问题,我们将不胜感激。
    • 我实际上已经解决了大部分错误。这是我的代码:github.com/dallinski/GoogleMapsSuperZoomMapType.
    • 我花了一段时间才弄清楚“ts”扩展名,但我现在明白这需要使用和熟悉 Type Script。希望它对其他读者有用。
    猜你喜欢
    • 2018-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-23
    • 1970-01-01
    • 2015-12-19
    • 2012-09-08
    相关资源
    最近更新 更多