Leafletjs 显示我的位置标记而不是硬编码的位置

Posted

技术标签:

【中文标题】Leafletjs 显示我的位置标记而不是硬编码的位置【英文标题】:Leafletjs show my location marker instead of hardcoded location 【发布时间】:2019-08-03 21:39:54 【问题描述】:

我正在试用 Leaflet.js,我有一张带有这样标记的地图:

var marker = new L.marker([5.897818, -1.120009],
    draggable: true,
    autoPan: true
).addTo(mymap);

这显示正常,但我希望它出现在我当前的位置,而不是上面的硬编码位置。

我该怎么做?

【问题讨论】:

【参考方案1】:

您需要点击Geolocation API 并使用其结果来创建标记。

var mymap = L.map('mapid').setView([51.505, -0.09], 13);

navigator.geolocation.getCurrentPosition(position => 
  const  coords:  latitude, longitude  = position;
  var marker = new L.marker([latitude, longitude], 
    draggable: true,
    autoPan: true
  ).addTo(mymap);

  console.log(marker);
)

将 API 与 *** 结合使用会出现一些问题,因此这里有一个指向有效的 JSFiddle 的链接。

【讨论】:

它要求我获得地理位置的许可,但标记没有出现..当您在本地浏览器上打开计算机上的 html 页面时它不起作用吗? 啊,好吧,我明白了。我前一段时间做了这个,所以里面有一个嵌入式 API 密钥。如果您转到MapBox,您可以创建自己的 API 密钥。得到一个后,只需更新脚本中设置切片图层的部分,并用您自己的密钥替换access_token 之后的所有内容。 好的,我创建了一个帐户并更改了访问令牌,但仍然没有出现指针。我正在使用 chrome 并通过双击桌面上的文件打开 html 文件。我是否需要在线托管此页面才能显示地理位置标记? 我会在getCurrentPosition 的回调中添加一些日志记录,以验证它是否正在获取位置信息。另外,您能否让它在 JSFiddle 或某些托管环境中工作? 控制台日志没有返回任何内容: navigator.geolocation.getCurrentPosition(position => const coords: latitude, longitude = position; var marker = new L.marker([latitude, longitude], draggable: true, autoPan: true ).addTo(mymap); console.log($latitude-$longitude); console.log(marker); )

以上是关于Leafletjs 显示我的位置标记而不是硬编码的位置的主要内容,如果未能解决你的问题,请参考以下文章

缩放以适合 LeafletJS 地图上的所有标记

如何使用 colorbox 在我的页面上显示隐藏的 div 而无需硬编码?

如何在 XSLT 条件下更改硬编码元素的位置?

从硬编码数组而不是 DB 创建游标

登录表单用户凭据而不是 LDAP Spring Security 中的硬编码 UserDn 和密码

有没有办法在 Spring Security 插件的属性文件中定义角色而不是硬编码它们?