谷歌地图移动视图

Posted

技术标签:

【中文标题】谷歌地图移动视图【英文标题】:Google Map mobile view 【发布时间】:2018-08-23 20:44:00 【问题描述】:

我正在使用 Google Map API V3 和样式,我正在使用 Snazzy Maps。 我在多个位置使用多个标记。 一切都很好,工作正常我现在只想在移动屏幕上显示所有标记,必须用两根手指拖动屏幕才能在移动设备中定位位置。

有没有办法调整移动设备的缩放级别?

提前致谢。

这是我的代码。

function initMap() 

var usa = lat: 38.6318618, lng: -98.318221;
var pacificOcean= new google.maps.LatLng(39.964202, -130.271346);
var atlanticOcean= new google.maps.LatLng(37.391290, -58.478699);


var alabama = 
    info: '<p class="m_title">Alabama</p>\
                <p class="m_desc">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam</p>\
                <a class="m_link" href="#">Learn More</a>',
    lat: 32.806671,
    long: -86.791130
;

var utslRO = 
    info: '<p class="m_title">Utah RO</p>\
                <p class="m_desc">Lorem Ipsum</p>\
                <a class="m_link" href="#">Learn More</a>',
    lat: 40.7762691,
    long: -112.2006695
;

var utccRP = 
    info: '<p class="m_title">Utah RP</p>\
                <p class="m_desc">Lorem ipsum</p>\
                <a class="m_link" href="#">Learn More</a>',
    lat: 37.6848877,
    long: -113.1720903
;

var ohio = 
    info: '<p class="m_title">Ohio</p>\
                <p class="m_desc">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam</p>\
                <a class="m_link" href="#">Learn More</a>',
    lat: 40.388783,
    long: -82.764915
;

var locations = [
  [alabama.info, alabama.lat, alabama.long, 0],
  [utslRO.info, utslRO.lat, utslRO.long, 1],
  [utccRP.info, utccRP.lat, utccRP.long, 2],
  [ohio.info, ohio.lat, ohio.long, 3],
];

var map = new google.maps.Map(document.getElementById('map'), 
    zoom: 4.2,
    center: usa,
    bounds: new google.maps.LatLngBounds(new google.maps.LatLng(39.964202, -130.271346), google.maps.LatLng(37.391290, -58.478699)),


        draggable: true,
    mapTypeId: google.maps.MapTypeId.ROADMAP
);

var infowindow = new google.maps.InfoWindow(


);

var marker, i;

for (i = 0; i < locations.length; i++) 
    marker = new google.maps.Marker(
        position: new google.maps.LatLng(locations[i][1], locations[i][2]),
        map: map,
        icon:'marker.png'
    );



    google.maps.event.addListener(marker, 'click', (function (marker, i) 
        return function () 
            infowindow.setContent(locations[i][0]);
            infowindow.open(map, marker);
        
    )(marker, i)); 


【问题讨论】:

你需要设置边界。 ***.com/questions/1556921/… 我试过绑定你可以在我的代码中看到@LukeP.Issac 您需要获取您在 for 循环中创建的所有标记位置,在一个变量中,然后在 for 循环结束后使用 map.fitBounds(variable)。检查***.com/questions/1556921/… 【参考方案1】:

我在这里想出了一个简单的 JS 技巧

function initMap() 
  var zoomVal = 4.2;
  if (window.matchMedia('(max-width: 767px)').matches) 
    zoomVal = 2.5;
  

 var map = new google.maps.Map(document.getElementById('map'), 
    zoom: zoomVal,
    center: usa,
    mapTypeId: google.maps.MapTypeId.ROADMAP
 );

它在所有移动设备上都能完美运行。

【讨论】:

以上是关于谷歌地图移动视图的主要内容,如果未能解决你的问题,请参考以下文章

是否可以在卫星模式下在谷歌地图上移动相机?

谷歌地图:如何防止 InfoWindow 移动地图

Ionic 3 原生谷歌地图限制地图移动/拖动/旋转选项

离子应用谷歌地图显示 - 移动设备位置问题

在谷歌地图javascript api中 - 如何移动地图而不是标记

谷歌地图更新jquery移动问题