【问题标题】:Zooming based on Google Maps result根据谷歌地图结果缩放
【发布时间】:2018-08-20 04:29:40
【问题描述】:

这是我当前的代码:

$scope.search = function(){
    Request.googleAPI($scope.searchForm).then(function(data){
        console.log("Search result: ")
        console.log(data)
        var actualZoom = map.getView().getZoom();
        console.log("Zoom level: " + actualZoom)
        var point = [data.data.results[0].geometry.location.lng, data.data.results[0].geometry.location.lat];
        var size = /** @type {ol.Size} */ (map.getSize());
        view.centerOn(ol.proj.transform(point, 'EPSG:4326', 'EPSG:3857'), size, [size[0]/2, size[1]/2]);
        /*
        map.setView(new ol.View({
            projection: 'EPSG:4326',
            center: [long, lat], //long,lat
            zoom: actualZoom
        }));
        */
    })
}

我尝试使用底部注释的内容(建议使用 SO)。我将其调整为仅使用“缩放”,但它会使我的地图变白。

Google 地图请求包含几何点位置(纬度/经度),还包含边界框,它应该确定缩放级别。如何使用此边界框正确更新我的地图?

如果您需要查看更多代码,这里是我正在使用的complete script

【问题讨论】:

  • 请提供一个证明问题的minimal reproducible example(可能不需要实际调用.googleAPI,只需返回数据)。
  • 这是我的complete code。我认为除了我提供的东西之外,不需要任何东西。您是否介意指出此代码中缺少的内容,以便我可以从错误中吸取教训?无论如何,我找到了解决方案并发布了它。不过,我只能接受它作为明天的答案。
  • 很高兴您解决了问题。请在问题本身中提供minimal reproducible example,而不是(仅)提供指向外部网站的链接。
  • 这是我正在处理的实际代码的链接,上次我复制粘贴了这么多代码时,我还被警告说我不应该放那么多信息。可能看起来晦涩难懂的变量(例如 viewmap)对我来说同样晦涩难懂,因为这是分配给我的其他人的代码。
  • 您的完整代码不是(必然)minimal reproducible example。外部网站(您正在处理的代码)将发生变化,并且不再是您问题未来读者的有用资源。

标签: javascript angularjs google-maps openlayers


【解决方案1】:

解决了我的数学问题!

$scope.search = function(){
    Request.googleAPI($scope.searchForm).then(function(data){

        var point = [data.data.results[0].geometry.location.lng, data.data.results[0].geometry.location.lat];
        var size = /** @type {ol.Size} */ (map.getSize());
        view.centerOn(ol.proj.transform(point, 'EPSG:4326', 'EPSG:3857'), size, [size[0]/2, size[1]/2]);

        // To adjust Zoom Level
        var bound = data.data.results[0].geometry.viewport;
        var east = bound.northeast.lng
        var west = bound.southwest.lng
        var zoom = 9 - Math.floor(Math.log(Math.abs(west-east))/Math.log(2));
        map.getView().setZoom(zoom);
    })
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-14
    • 1970-01-01
    • 2015-08-15
    • 1970-01-01
    • 2019-08-21
    • 1970-01-01
    • 2015-12-19
    相关资源
    最近更新 更多