如何在Here Maps API for JavaScript上实现类似谷歌地图的滚动行为?

如何在Here Maps API for JavaScript上实现类似谷歌地图的滚动行为?,javascript,maps,here-api,Javascript,Maps,Here Api,我正在使用这里的MapsAPI for JavaScript,并试图在移动设备上实现类似于GoogleMap API的滚动行为 当我想通过触摸地图进行滚动时,不应总是阻止滚动页面,除非地图的拖动行为被禁用 我曾尝试使用从指针事件中提取的相应Y参数调用window.scroll(),但它不如浏览器的默认滚动平滑 我应该如何使用拖动或其他针对地图的事件来滚动页面?您可以通过以下方式允许在地图上滚动: 在dragstart上禁用地图的拖动行为并捕获Y坐标 在dragend上启用地图的拖动行为并捕获Y坐

我正在使用这里的MapsAPI for JavaScript,并试图在移动设备上实现类似于GoogleMap API的滚动行为

当我想通过触摸地图进行滚动时,不应总是阻止滚动页面,除非地图的拖动行为被禁用

我曾尝试使用从指针事件中提取的相应Y参数调用
window.scroll()
,但它不如浏览器的默认滚动平滑


我应该如何使用
拖动
或其他针对地图的事件来滚动页面?

您可以通过以下方式允许在地图上滚动:

  • dragstart
    上禁用地图的拖动行为并捕获Y坐标
  • dragend
    上启用地图的拖动行为并捕获Y坐标
  • dragend
    上的起始和结束Y坐标的差值滚动页面

  • 您可以通过以下方式允许在地图上滚动:

  • dragstart
    上禁用地图的拖动行为并捕获Y坐标
  • dragend
    上启用地图的拖动行为并捕获Y坐标
  • dragend
    上的起始和结束Y坐标的差值滚动页面

  • 此代码应适用于您:

    let mapevents = new mapsjs.mapevents.MapEvents(map),
        behavior = new mapsjs.mapevents.Behavior(mapevents);
    
    let startY, endY = 0;
    map.addEventListener('dragstart', function(evt) {
      if (evt.currentPointer.type == 'touch' && evt.pointers.length < 2) {
        startY = evt.currentPointer.viewportY;
        behavior.disable(H.mapevents.Behavior.DRAGGING);
      }
    });
    
    map.addEventListener('drag', function(evt) {
      if (evt.currentPointer.type == 'touch' && evt.pointers.length < 2) {
        endY = evt.currentPointer.viewportY;
        window.scrollBy(0, (startY - endY));
      }
    });
    
    map.addEventListener('dragend', function(evt) {
      behavior.enable(H.mapevents.Behavior.DRAGGING);
    });
    
    让mapevents=new-mapsjs.mapevents.mapevents(map),
    行为=新的mapsjs.mapevents.behavior(mapevents);
    设startY,endY=0;
    map.addEventListener('dragstart',函数(evt){
    if(evt.currentPointer.type='touch'&&evt.pointers.length<2){
    startY=evt.currentPointer.viewportY;
    禁用(H.mapevents.behavior.Draging);
    }
    });
    map.addEventListener('drag',函数(evt){
    if(evt.currentPointer.type='touch'&&evt.pointers.length<2){
    endY=evt.currentPointer.viewportY;
    scrollBy(0,(startY-endY));
    }
    });
    map.addEventListener('dragend',函数(evt){
    启用(H.mapevents.behavior.Draging);
    });
    
    dragstart
    drag
    回调中,仅当指针的类型为
    touch
    且指针的数量为1时,才会禁用滚动。这使得在触摸设备上用两个手指以及在台式机/笔记本电脑上用鼠标缩放和平移地图成为可能


    请注意,该方法
    behavior.isEnabled(功能)
    不会禁用该功能。为此,您需要使用
    行为。禁用(opt_功能)
    请参见此代码适用于您:

    let mapevents = new mapsjs.mapevents.MapEvents(map),
        behavior = new mapsjs.mapevents.Behavior(mapevents);
    
    let startY, endY = 0;
    map.addEventListener('dragstart', function(evt) {
      if (evt.currentPointer.type == 'touch' && evt.pointers.length < 2) {
        startY = evt.currentPointer.viewportY;
        behavior.disable(H.mapevents.Behavior.DRAGGING);
      }
    });
    
    map.addEventListener('drag', function(evt) {
      if (evt.currentPointer.type == 'touch' && evt.pointers.length < 2) {
        endY = evt.currentPointer.viewportY;
        window.scrollBy(0, (startY - endY));
      }
    });
    
    map.addEventListener('dragend', function(evt) {
      behavior.enable(H.mapevents.Behavior.DRAGGING);
    });
    
    让mapevents=new-mapsjs.mapevents.mapevents(map),
    行为=新的mapsjs.mapevents.behavior(mapevents);
    设startY,endY=0;
    map.addEventListener('dragstart',函数(evt){
    if(evt.currentPointer.type='touch'&&evt.pointers.length<2){
    startY=evt.currentPointer.viewportY;
    禁用(H.mapevents.behavior.Draging);
    }
    });
    map.addEventListener('drag',函数(evt){
    if(evt.currentPointer.type='touch'&&evt.pointers.length<2){
    endY=evt.currentPointer.viewportY;
    scrollBy(0,(startY-endY));
    }
    });
    map.addEventListener('dragend',函数(evt){
    启用(H.mapevents.behavior.Draging);
    });
    
    dragstart
    drag
    回调中,仅当指针的类型为
    touch
    且指针的数量为1时,才会禁用滚动。这使得在触摸设备上用两个手指以及在台式机/笔记本电脑上用鼠标缩放和平移地图成为可能


    请注意,该方法
    behavior.isEnabled(功能)
    不会禁用该功能。为此,您需要使用
    行为。禁用(opt_功能)
    请参见

    您好,您可以添加一些屏幕截图来显示您想要实现的目标吗。下面是一个屏幕记录:。在这种情况下,通过调用
    this.behavior.isEnabled(H.mapevents.behavior.draging)
    禁用拖动。我想要实现的是在地图上滚动。嗨,你能添加一些屏幕截图来显示你想要实现的内容吗?这里是一个屏幕记录:。在这种情况下,通过调用
    this.behavior.isEnabled(H.mapevents.behavior.draging)
    禁用拖动。我想要实现的是在地图上滚动。