调整大小/定位问题为打印媒体准备自定义谷歌地图

时间:2014-01-21 13:44:34

标签: javascript google-maps google-maps-api-3

我目前正在为自定义谷歌地图设置打印按钮。我的最终目标是让我的地图在打印时调整为800px x 800px,这样无论设备大小如何,地图的可视区域都适合纸张。

这个调整大小的工作正常但是当试图重新定位地图时它只会在触发打印窗口后发生变化。我错过了地图上需要的刷新,或者是否有一些我没有看到的明显的东西。

提前致谢!

破碎的代码;

  function center_print() {
    var lastPos = map.getCenter();
      document.getElementById("map-canvas").style.height = "800px";
      document.getElementById("map-canvas").style.width = "800px";
    map.setCenter(lastPos);
    window.print();
      document.getElementById("map-canvas").style.height = "";
      document.getElementById("map-canvas").style.width = "";
    map.setCenter(lastPos);
  }

最终解决方案;

  //Used for centering the map on print
  function center_map(size) {
  lastPos = map.getCenter(); 
  if (lastPos != null) {  
    document.getElementById("map-canvas").style.height = size + "px";
    document.getElementById("map-canvas").style.width = size + "px";
    google.maps.event.trigger(map, 'resize');
    map.setCenter(lastPos);
  return true;
  }
  else {
    return false;
  }
  }

  function print_map() {
     if (center_map(800)) {
      window.setTimeout(window.print, 1000);
      document.getElementById("map-canvas").style.height = "";
      document.getElementById("map-canvas").style.width = "";
     }
  }

1 个答案:

答案 0 :(得分:2)

我会建议在重新调整地图大小之后在地图上触发重新调整大小:

google.maps.event.trigger(map, 'resize');

这应该保留我相信原始尺寸的中心。