这里 JavaScript API 3.0 - 如何实现可拖动标记

2024-01-15

我想用最近发布的 JavaScript API 3.0 实现一个可拖动标记。

使用旧的 API 非常简单。将draggable 属性设置为true 后,您可以移动地图上的标记。

位于[此处][1]的新 API 3.0 的迁移指南指出,在地图对象上启用事件并将“draggable”属性设置为“true”后,必须实现相应的事件。

marker.addEventListener('dragstart', function() {
//handle drag start here
});
marker.addEventListener('drag', function() {
//handle drag here
});
marker.addEventListener('dragend', function() {
//handle drag end here
});

但我不确定如何在相应的事件中实现此拖动功能。当然必须计算新位置,但是要使标记根据鼠标位置移动会是什么样子呢?以下代码片段需要以某种方式扩展......

marker.addEventListener('drag', function(evt) {
  var coord = map.screenToGeo(evt.currentPointer.viewportX,
            evt.currentPointer.viewportY);
  evt.target.setPosition( coord );
});

感谢您的帮助, 塞帕尔

事件[1]:http://developer.here.com/documentation/download/maps_js_html5_nlp/3.0.5/Maps%20API%20for%20JavaScript%20v3.0.5%20Migration%20Guide.pdf http://developer.here.com/documentation/download/maps_js_html5_nlp/3.0.5/Maps%20API%20for%20JavaScript%20v3.0.5%20Migration%20Guide.pdf "here"


创建的工作示例可拖动的中的标记HERE JavaScript 3.0 地图 API可以在找到最近的标记 http://developer.here.com/api-explorer#maps-js/finding-the-nearest-marker例子。设置分为三个部分。

  • 首先设定marker.draggable = true所以它可以接收drag events

    marker = new H.map.Marker(...);
    marker.draggable = true;
    map.addObject(marker);
    
  • 其次禁用底层地图的默认可拖动性 (i.e.的实例H.mapevents.Behavior) 开始拖动时 标记对象:

    map.addEventListener('dragstart', function(ev) {
      var target = ev.target;
      if (target instanceof H.map.Marker) {
        behavior.disable();
      }
    }, false);
    
    
    map.addEventListener('dragend', function(ev) {
      var target = ev.target;
      if (target instanceof mapsjs.map.Marker) {
        behavior.enable();
      }
    }, false);
    
  • 三、听者drag事件,并使用更新标记setPosition()

    map.addEventListener('drag', function(ev) {
      var target = ev.target,
          pointer = ev.currentPointer;
      if (target instanceof mapsjs.map.Marker) {
        target.setPosition(map.screenToGeo(pointer.viewportX, pointer.viewportY));
      }
    }, false);
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

这里 JavaScript API 3.0 - 如何实现可拖动标记 的相关文章

随机推荐

  • 将 SuperCsv 与多个变量列结合使用

    我正在查看 Super CSV 中的这个示例website http supercsv sourceforge net examples reading variable cols html这表明 dateofbirth 是可选列 如果我有
  • 如何让 Jupyter / IPython Notebook nbconvert 输出不会溢出页面的 PDF?

    当我通过以下方式将 Jupyter IPython Notebook 转换为 PDF 时ipython nbconvert my notebook ipynb to PDF 它大部分看起来都不错 除了一些长行和所有输出只是超出页面边缘 没有
  • Android @Override 用法[重复]

    这个问题在这里已经有答案了 Java 新手 C 老手 我注意到很多使用 Override在 Android 示例代码中 我认为所有 Java 方法默认都是 虚拟 的 然后做什么 Override do 例子 private class He
  • 绝对位置+滚动

    与以下HTML and CSS container position relative border solid 1px red height 256px width 256px overflow auto full height posi
  • 如何将 InMemoryUploadedFile 的内容转换为字符串

    有谁知道如何转换上传文件的内容 InMemoryUploadedFile 在 Django2 中转换为字符串 我想知道下面的内容怎么写convert2string uploaded file request FILES file my xm
  • 无法在 Mac OSX 上安装 PG gem

    我创建了一个新的 Rails 应用程序 rails new d postgresql 但是 我无法安装 pg gem 我之前使用brew安装了postgres 它会随着我的Mac自动启动 我已经尝试过在此处发布的几件事 我正在使用红宝石2
  • 如何生成具有泊松分布的离散随机事件?

    我知道 Knuth 的生成随机泊松分布数的算法 下面在 Java 中 但是我如何将其转换为调用方法 generateEvent 随时间随机 int poissonRandomNumber int lambda double L Math e
  • Python IDLE 无法在 Windows 7 上启动

    我曾经使用Python 2 7 然后IDLE就可以工作了 我卸载了它并安装了Python 3 1 现在 Idle 无法启动 我应该做什么才能让它运行 笔记 我尝试了 c Python31 pythonw exe c Python31 Lib
  • PHP DOM 中无效 XML/HTML 的问题

    假设您有以下 HTML 你想将它加载到 PHP DOMDocument 对象中 你应该怎么做 如果你使用 doc gt loadHTML 就会出现这样的问题 div 是在里面 div
  • Python-创建表

    我是一个处于早期阶段的Python用户 我有 1850 年至 2010 年特定地点的两个温度数据集 整个期间每个月都有一个温度值 我正在尝试使用以下给定格式的这些值创建一个表 T是我的数据 year data JAn FEB MAR APR
  • 使用存储库模式时的 MongoDB 和大型数据集

    好的 在工作中我们正在使用 MVC C 和 MongoDB 开发一个系统 当第一次开发时 我们决定遵循存储库模式可能是一个好主意 真是太痛苦了 下面的代码可以让您了解当前实现的内容 MongoRepository 类 public clas
  • NOT NULL 约束失败 Django CreateView

    我想在这个项目上实现两个目标 首先 我想将登录用户保存为审阅者 其次 我想将外键中的律师值传递到审核表单中 这样 用户可以点击律师详细信息页面上的审查链接进行审查 并审查该律师而不是其他人 我一直在实现第一个目标 但出现了这个错误 erro
  • Java - Jackson 嵌套数组

    鉴于以下数据 version 1 data 1 2 3 4 5 6 我尝试了以下定义并使用ObjectMapper readValue jsonstring Outer class class Outer public int versio
  • 在 django 后端自动增加新发票的发票编号

    我想自动递增发票号码 即 3 位字符和 4 位数字 class Invoice invoice no models CharField max length 500 null True blank True validators Regex
  • ChoiceField.choices 可调用对象如何知道要返回哪些选项?

    在 Django 1 8 中 ChoiceField s choices参数可以接受可调用的 def get choices return 1 one 2 two class MyForm forms Form my choice fiel
  • 不会向内部用户发送 TestFlight 邀请电子邮件

    我为 TestFlight 设置了我的应用程序 对于外部用户 它正在等待审核 但如果我想邀请内部用户 我会选择他们并按邀请 iTunes Connects 表示他们现在已收到邀请 但受邀请的电子邮件均未收到邀请电子邮件 你知道我做错了什么吗
  • GRAV 子导航

    我尝试制作我的第一个网站GRAV http getgrav org内容管理系统 现在在我的pages folder它看起来像这样 主页 默认 md about 关于 seite1 default md 关于 seite2 default m
  • 带工具提示的 WPF 自定义验证器

    我想为我的 WPF 应用程序创建一个自定义验证器模板 我有一个工具提示模板
  • Linq2Sql 将记录插入相关表

    类似情况 如何使用 LINQ2SQL 添加多个相关记录 https stackoverflow com questions 630320 how to add several dependent records with linq2sql
  • 这里 JavaScript API 3.0 - 如何实现可拖动标记

    我想用最近发布的 JavaScript API 3 0 实现一个可拖动标记 使用旧的 API 非常简单 将draggable 属性设置为true 后 您可以移动地图上的标记 位于 此处 1 的新 API 3 0 的迁移指南指出 在地图对象上