jquery GoogleMap中的灰色区域

3hvapo4f  于 2023-08-04  发布在  jQuery
关注(0)|答案(5)|浏览(151)

我已经在我的应用程序中实现了谷歌Map(在模态中),但是正如你在下面的图片中看到的那样,我当然想摆脱一个灰色区域。移动Map使灰色区域消失是可能的,但这不应该是必要的。
问题是,Map显示在一个模态框中,其中包含了大量的内容,这些内容是在单击用于显示模态的按钮时动态创建的。似乎问题可能是在加载模态之前Map内容没有完全加载,但我不确定……

html:

...
  <div id="myModal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
    <div class="modal-header">
      <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
      <h3 id="myModalLabel">Test</h3>
    </div>
    <div id="modal-left" class="modal-body left"></div>
    <div class="modal-body right">
      <div id="map"></div>
    </div>
  </div>
    ...

字符串

js:

function initializeMap(latitude, longitude) {
        var place = new google.maps.LatLng (latitude, longitude);

        var myOptions = {
            zoom: 10,
            center: place,
            mapTypeId: google.maps.MapTypeId.ROADMAP
        }

        var map = new google.maps.Map(document.getElementById("map"), myOptions);

        var marker = new google.maps.Marker({
            position: place,
            map: map,
            title: ""
        });
    };

    $('.modal-btn').click(function(){
        var producerId = $(this).attr('id');

        GetProducer(producerId, function(data) {  // <--- data retrieved through ajax
            initializeMap(data.latitude, data.longitude);

            var titel = data.name;

            var content = "<p><img class='modal-img' src='" + data.imgurl + "' /></p>" +
                        "<p>" + data.name + ", " + data.address + "<br/>" +
                        data.zipcode + " " + data.town + "</p>" +
                        "<p><a href='" + data.url + "' >" + data.url + "</a></p>";

            $('#myModalLabel').html(titel);
            $('#modal-left').html(content);
        });
    });

  • 图片1:*


的数据

  • 图片2:*


cwdobuhd

cwdobuhd1#

发生这种情况的通常原因是Map的大小在Map初始化后发生了变化。如果出于某种原因更改id=“map”的div的大小,则需要触发“resize”事件

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

字符串
你可以尝试在你的JavaScript控制台中触发事件,看看它是否有帮助。
请注意,这个答案是一个猜测,因为没有什么真正的问题,以工作,所以请让我知道,如果它没有帮助。

vohkndzv

vohkndzv2#

将google.maps.event.trigger(map,“resize”);在setTimeout函数中,以便它在事件被触发之后触发。

ht4b089n

ht4b089n3#

我一直在寻找一个解决方案一段时间。我也有同样的问题,而且我不是唯一一个。上面的代码行是不够的,但我注意到手动调整浏览器大小可以解决这个问题。如果它也能解决你的问题,那么我的解决方法是:
1)在初始化Map的函数末尾添加这个。它将向其添加一个侦听器,并在加载Map时调用该函数。它将基本上模拟调整大小。

google.maps.event.addListenerOnce(map, 'idle', function(){
    $(window).resize();
    map.setCenter(yourCoordinates);
});

字符串
我不得不重新调整Map中心后,调整大小
2)创建一个resize监听器,调用google map resize事件,如下所示:

$(window).resize(function() {
    if ($("#map_canvas").children().length > 0){    
        if (map)
        google.maps.event.trigger(map, 'resize');
    }});


我还必须把map放在我的初始化函数之外。我知道这不是最好的解决办法,但它现在工作。不要担心resize()调用。
它似乎与包含谷歌Map的隐藏div有关。我在this website jfyi上也找到了类似的解决方案。祝你好运!

jc3wubiy

jc3wubiy4#

这对我很有效:

var center = map.getCenter();
 // . . . your code for changing the size of the map
 google.maps.event.trigger(map, "resize");
 map.setCenter(center);

字符串
来自@Bruno提到的链接

7z5jn7bk

7z5jn7bk5#

这对我很有效:

onMapReady(map?: google.maps.Map): void {
    if (map) {
      map.setOptions({
        streetViewControl: false,
        panControl: false,
        zoomControl: true,
        mapTypeControl: false,
        scaleControl: false,
        rotateControl: false,
        restriction: {
          latLngBounds:{
            north: 85.0,
            south: -85.0,
            west: -180.0,
            east: 180.0
          },
          strictBounds : true
        }
      });
    }
  }

字符串
this源代码

相关问题