我已经创建了功能,该功能以google地图为中心,但是我需要在上面做一点,因为描述窗口不可见。

这是图片的外观:

javascript - 如何使谷歌 map 不居中,而是有点上方?-LMLPHP

这是我想要的图片:

javascript - 如何使谷歌 map 不居中,而是有点上方?-LMLPHP

这是一个js脚本。

   var address = "{{$restaurant->address}}";
geocoder.geocode( { 'address': address}, function(results, status) {
  if (status == google.maps.GeocoderStatus.OK) {

     var latlng = new google.maps.LatLng(-34.397, 150.644);
     var mapOptions = {
       zoom: 17,
       scrollwheel: false,
       styles: styleArray,
       center: latlng
     }
     map = new google.maps.Map(document.getElementById("map"), mapOptions);

     map.setCenter(results[0].geometry.location);
     marker = new google.maps.Marker({
        map: map,
        animation: google.maps.Animation.DROP,
        position: results[0].geometry.location
    });

     var contentString = "<b style='color:black'>{{$restaurant->address}}</b>"; // HTML text to display in the InfoWindow
     var infowindow = new google.maps.InfoWindow( { content: contentString } );
     infowindow.open( map, marker );
     google.maps.event.addListener( marker, 'click', function() { infowindow.open( map, marker ); });

     var center;
     function calculateCenter() {
      center = map.getCenter();
     }

     google.maps.event.addDomListener(map, 'idle', function() {
      calculateCenter();
     });

     google.maps.event.addDomListener(window, 'resize', function() {
      map.setCenter(center);
     });

  }else {
       alert("Geocode was not successful for the following reason: " + status);
  }
});

最佳答案

没有一个根据标记的位置和信息窗口的尺寸(据我所知)将地图居中的辅助功能。

如果infoWindow具有固定的尺寸,则使用panBy方法可能是实现所需功能的最简单方法。

the API reference


  panBy(x:number, y:number)
  
  按给定距离(以像素为单位)更改地图中心。如果距离小于地图的宽度和高度,则过渡将平滑地进行动画处理。请注意,地图坐标系从西到东(对于x值)和从北到南(对于y值)增加。


一个简单的例子:

// Use the property `center` to define the initial center of the map
var mapOptions = {};

// Render the map
var map = new google.maps.Map(document.getElementById('map'), mapOptions);

// Transition the center of the map by 0 pixels to the east,
// and n pixels to the south, where n is half the height of
// the infoWindow
map.panBy(0, n);


如果infoWindow具有动态尺寸,则必须先查询其尺寸,然后再使用panBy方法。

这对您有用吗?

关于javascript - 如何使谷歌 map 不居中,而是有点上方?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34510735/

10-09 23:05