Google Maps API使用本地存储值中的缩放级别和中心位置在页面加载时调整Map

vi4fp9gy  于 2022-09-21  发布在  Go
关注(0)|答案(1)|浏览(211)

我正在使用WordPress/jQuery/Google Maps设置来向用户显示列表Map。

jQuery.goMap.map代码用于加载WordPress插件上使用的Google Maps示例。

我已经编写了以下函数来存储和加载本地存储的纬度、经度和缩放级别。LAT/LNG和缩放级别的存储正在工作,缩放级别的加载也在工作,但我无法使Map以加载的纬度和经度位置为中心。

我尝试在loadUserZoom函数中使用bounds.extend(latLng);jQuery.goMap.map.fitBounds(bounds);,但结果是一个完全放大的Map。这意味着存储的缩放级别值将被忽略。

当前运行的代码可以是tested here

标题导航中的明文链接可用于从浏览器中清除本地存储值。这是出于测试目的而实现的。

如有任何帮助,我们不胜感激。

功能:store UserZoom

function storeUserZoom() {
  let zoom = jQuery.goMap.map.getZoom();
  localStorage.setItem( 'zoom', zoom);
  let center = jQuery.goMap.map.getCenter();
  let lat = center.lat();
  let lng = center.lng();
  let latLng = {
    lat: lat,
    lng: lng
  }
  localStorage.setItem( 'latLng', JSON.stringify(latLng));
}

功能:loadUserZoom

function loadUserZoom() {
  if (localStorage.getItem( 'zoom' )) {
    let zoom = parseInt(localStorage.getItem( 'zoom' ));
    console.log(zoom);
    // Logs correct zoom level
    let latLng = JSON.parse(localStorage.getItem( 'latLng' ));
    console.log(latLng);
    // Logs Object { lat: 51.69124213478852, lng: -113.2478200914128 }
    jQuery.goMap.map.setZoom(zoom);
    jQuery.goMap.map.setCenter(latLng);
    // latLng used is incorrect
  }
}
ar7v8xwq

ar7v8xwq1#

通过调整loadUserZoom函数在initMap函数中的执行方式,我相信我已经将重点放在了这个问题上。

当Map空闲时,loadUserZoom函数被 Package 在Google Maps Listen Once事件侦听器中。代码如下所示。

google.maps.event.addListenerOnce(jQuery.goMap.map, 'idle', function() {
  loadUserZoom();
});

我最初将其设置为addListener,这似乎与所需的功能冲突。我认为这意味着只要Map处于空闲状态,它就会定期执行。

下面包括我更新的loadUserZoom函数。

function loadUserZoom() {
  if (localStorage.getItem( 'zoom' )) {
    let zoom = parseInt(localStorage.getItem( 'zoom' ));
    let latLng = JSON.parse(localStorage.getItem( 'latLng' ));
    jQuery.goMap.map.setZoom(zoom);
    jQuery.goMap.map.setCenter(latLng);
  }
}

相关问题