Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 谷歌地图Api-缩放时不更改地图中心_Javascript_Google Maps_Google Maps Api 3 - Fatal编程技术网

Javascript 谷歌地图Api-缩放时不更改地图中心

Javascript 谷歌地图Api-缩放时不更改地图中心,javascript,google-maps,google-maps-api-3,Javascript,Google Maps,Google Maps Api 3,是否可以在放大/缩小事件上保持相同的地图中心?无论是使用滚轮、双击还是缩放控件,其行为都应相同 我注意到,当使用滚轮放大/缩小时,地图上的鼠标指针位置存在偏差,我在文档上没有找到任何选项,但覆盖该偏差将是理想的 我如何初始化我的地图 var map = new google.maps.Map(document.getElementById("map_div"), { center: new google.maps.LatLng(33.808678, -117.918921), z

是否可以在放大/缩小事件上保持相同的地图中心?无论是使用滚轮、双击还是缩放控件,其行为都应相同

我注意到,当使用滚轮放大/缩小时,地图上的鼠标指针位置存在偏差,我在文档上没有找到任何选项,但覆盖该偏差将是理想的

我如何初始化我的地图

var map = new google.maps.Map(document.getElementById("map_div"), {
    center: new google.maps.LatLng(33.808678, -117.918921),
    zoom: 15,
    disableDefaultUI: true
  });

按照@Adam对注释的建议,我禁用了滚轮缩放,并在实例化地图时双击缩放,并添加了事件侦听器,以使用我自己的实现处理这些事件

下面是一个示例,并解释了代码:

/*
 * declare map as a global variable
 */
var map;
/*
 * use google maps api built-in mechanism to attach dom events
 */
google.maps.event.addDomListener(window, "load", function() {
  var myMap = document.getElementById("map_div");
  /*
   * create map
   */
  var map = new google.maps.Map(myMap, {
    center: new google.maps.LatLng(33.808678, -117.918921),
    zoom: 15,
    disableDefaultUI: true,
    scrollwheel: false,
    disableDoubleClickZoom: true
  });
    //function that will handle the wheelEvent
  function wheelEvent(event) {
    var e = window.event || e; // old IE support
    var delta = Math.max(-1, Math.min(1, (e.wheelDelta || -e.detail))); //to know whether it was wheel up or down
    map.setZoom(map.getZoom() + delta);
  }

  function zoomIn() {
    map.setZoom(map.getZoom() + 1);
  }

  //add a normal event listener on the map container
  myMap.addEventListener('mousewheel', wheelEvent, true);
  myMap.addEventListener('DOMMouseScroll', wheelEvent, true);

  //same with the double click
  myMap.addEventListener('dblclick', zoomIn, true);

  //add center changed listener for testing
  google.maps.event.addListener(map, 'center_changed', function() {
    console.log("this is what i'm trying to avoid");
  });
});

没有API函数可以做到这一点。但是没有任何理由不能通过关闭API实现并自己实现来实现所需的功能。我担心没有办法“开箱即用”,但我会研究一下。谢谢,你为什么要这么做?在其他网站上使用过谷歌地图API的用户都知道,用滚轮缩放会有偏差地缩放到他们的指针所在的位置。覆盖该功能只会激怒用户。也就是说,你可以在mapOptions中禁用滚轮缩放,然后听自己的滚轮,然后执行类似于
map.setZoom(map.getZoom()+1)
的操作,这将在不重新居中的情况下进行缩放。好问题,我正在开发一个响应性web应用程序,还有一个输入,我在其中显示地图当前中心的地址,你可以移动地图,并使用我查询的places库和地理编码发送lat和lng的地址,这意味着我在重复使用maps api,并且可能比预期更快地消耗配额,需要支付更多的费用。如果我能保持地图的中心不变,这将意味着更少的api调用,因此投资更少。@Adam我已经实现了你的建议,它实现了我想要的,谢谢!