Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 渲染方向后,在路线上居中放置V3谷歌地图_Javascript_Google Maps_Google Maps Api 3 - Fatal编程技术网

Javascript 渲染方向后,在路线上居中放置V3谷歌地图

Javascript 渲染方向后,在路线上居中放置V3谷歌地图,javascript,google-maps,google-maps-api-3,Javascript,Google Maps,Google Maps Api 3,我有一个V3地图加载,默认情况下以特定的经度/纬度为中心。加载后,用户可以输入他们的地址以获取到该点的方向。发生这种情况时,将调整地图的大小以容纳其左侧的方向框。因此,路线在地图窗口中偏离中心。我尝试了下面的代码,我认为在逻辑上应该可以工作,但是没有用 新的认识:如果我以任何方式调整窗口的大小,它就会开始按预期工作 发现问题:在调整地图容器的大小后,我需要触发google.maps.event.trigger(地图,'resize') directionsService.route(query,

我有一个V3地图加载,默认情况下以特定的经度/纬度为中心。加载后,用户可以输入他们的地址以获取到该点的方向。发生这种情况时,将调整地图的大小以容纳其左侧的方向框。因此,路线在地图窗口中偏离中心。我尝试了下面的代码,我认为在逻辑上应该可以工作,但是没有用

新的认识:如果我以任何方式调整窗口的大小,它就会开始按预期工作

发现问题:在调整地图容器的大小后,我需要触发
google.maps.event.trigger(地图,'resize')

directionsService.route(query, function(result,status) {
    if (status === google.maps.DirectionsStatus.OK) {
        // This sets the directions container to display:block and resizes the map
        document.getElementById('map-container').className = "directions";
        directions.setDirections(result);
        var bounds = result.routes[0].bounds;
        map.fitBounds(bounds);
        map.setCenter(bounds.getCenter());
    } else {
        alert("");
    }
});
更新2018-05-22

使用Maps JavaScript API 3.32版中的新渲染器版本,调整大小事件不再是
Map
类的一部分

文件说明

调整地图大小时,地图中心是固定的

  • 全屏控件现在保留中心

  • 不再需要手动触发调整大小事件。

资料来源:


google.maps.event.trigger(映射,“调整大小”)从3.32版开始没有任何效果

您已经找到了我要说的答案。无论何时更改贴图容器(或其父容器),调整大小事件都非常重要。在我的例子中,我在两个选项卡(地图和驾驶方向)之间切换。起初,地图会正确显示在“地图”选项卡中,但切换到“方向”并返回到地图会导致显示有趣


如果您的地图仅在一个角(在我的示例中为左上角)显示一个小平铺,其余为空白,则您需要触发调整大小触发器。

一旦调用fitBounds,它应基于LatLngBounds居中,因此您不必设置中心耶,我在最后一次努力中添加了setCenter()。不管有没有,它都不会像预期的那样居中。完全误读了“调整大小”贴图部分。很高兴它成功了out@Justin你能回答你自己的问题吗。谢谢