ng-map 在 HTML 中显示部分地图

Posted

技术标签:

【中文标题】ng-map 在 HTML 中显示部分地图【英文标题】:ng-map shows partial map in HTML 【发布时间】:2015-08-07 06:19:50 【问题描述】:

我在 Angular.js 中使用 ng-map 出于某种原因,我的地图图片在整个地图的 90% 处显示为灰色,如下所示:

我的 html 非常简单:

<div id="map">
<map></map>
</div>

我什至尝试过像这样添加 CSS:

<style>
    #map
     width: 100%;
     height: 100%;
     margin: 0;
     padding: 0;
   
</style>

这是我的控制器:

$scope.$on('mapInitialized', function(event, map) 
  $scope.map.setCenter(new google.maps.LatLng($scope.location.latitude, $scope.location.longitude));
  $scope.setZoom(4);

我已经添加了使用 ngMap 的脚本。如果这可能导致问题,我还删除了任何 AdBlock。

编辑:google.maps.event.trigger(map,'resize');作品

【问题讨论】:

How do I resize a Google Map with javascript after it has loaded? 的可能重复项 确保地图的父元素尺寸正确。 【参考方案1】:

当您的地图被初始化时,它是在一个没有尺寸(0 宽度和/或 0 高度)的容器中完成的。所以地图不知道它需要多大的尺寸。

您应该在地图初始化之前明确设置元素的宽度和高度尺寸,或者,如果您的地图是在隐藏的变得可见的元素(没有宽度/高度)。

注意:

#map 设置为height:100% 无效,除非#map 的父元素具有明确的高度。继续,将#map 设置为height: 300px,你会发现它突然“工作”了。

如果你想让地图全屏,那么你必须设置html/body元素的高度:

html,body,#map  height: 100%; 

【讨论】:

google.maps.event.trigger(map,'resize');工作!谢谢!【参考方案2】:

我查看了 ng-map 的源代码,发现了这一段:

  /**
   * if style is not given to the map element, set display and height
   */
  if (getStyle(element[0], 'display') != "block") 
    element.css('display','block');
  
  if (getStyle(element[0], 'height').match(/^(0|auto)/)) 
    element.css('height','300px');
  

它将使用地图元素的高度(可能还有宽度)属性。 因此,解决您的问题最简单的方法是简单地在地图上设置宽度和高度:

<div id="map">
<map style="width:100%;height:100%;"></map>
</div>

编辑: ng-map 将在设置 div 的高度后立即调用google.maps.event.trigger(map,'resize');,因此您不必这样做。

/**
     * resize the map to prevent showing partially, in case intialized too early
     */
    $timeout(function() 
      google.maps.event.trigger(map, "resize");
    );

【讨论】:

【参考方案3】:

使用 ui-router 在 2 个视图之间导航时我遇到了同样的问题(每个视图都有自己的地图)。我通过将地图的容器宽度和高度设置为 100%、在 html 中向 ng-map 添加一个 id 并将下一个代码添加到状态控制器来解决了这个问题:

NgMap.getMap(id: 'myMapId' ).then(function(map) 
    google.maps.event.trigger(map, 'resize');
);

【讨论】:

以上是关于ng-map 在 HTML 中显示部分地图的主要内容,如果未能解决你的问题,请参考以下文章

仅在设备屏幕的特定部分显示谷歌地图折线

部分回发后谷歌地图不显示

如何设置 Android 谷歌地图一次显示整个(部分)世界地图?

如何在鼠标悬停时突出显示图像地图的某些部分?

在Kaggle上使用Python映射:地图未显示

echarts geo世界地图,汉化之后部分国家名称显示的位置不对,这个该怎么调?