javascript - Javascript 使用 onclick 和 geolocation 来检索当前位置
问题描述
我必须向提供的按钮添加一个单击处理程序,该按钮将使用地理定位 api 检索用户当前位置。这是我的代码,我正在尝试使用地理位置将用户的当前位置设置为地图,但由于某些原因该按钮不起作用。谁能指出我做错了什么并帮助我?
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Page Title</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.3.4/dist/leaflet.css" integrity="sha512-puBpdR0798OZvTTbP4A8Ix/l+A4dHDD0DGqYW6RQ+9jxkRFclaxxQb/SJAWZfWAkuyeQUytO7+7N4QKrDh+drA==" crossorigin=""/>
<script src="https://unpkg.com/leaflet@1.3.4/dist/leaflet.js" integrity="sha512-nMMmRyTVoLYqjP9hrbed9S+FzjZHW5gY1TWCHA5ckwXZBadntCNs8kEqAWdrb9O7rxbCaA4lKTIWjDXZxflOcA==" crossorigin=""></script>
<style>
#mapid { height: 600px; }
</style>
<script>
const Mapping = {
map : null,
initializeMap : () => {
Mapping.map = L.map('mapid').setView([51.505, -0.09], 13);
L.tileLayer( 'http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
attribution: '© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a>',
subdomains: ['a','b','c']
}).addTo( Mapping.map );
},
resetLocation : ({lat,lon}) => {
Mapping.map.setView([lat,lon], 13);
}
}
window.onload = () => {
Mapping.initializeMap();
userCode();
}
function userCode() {
// JS CODE START
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function (position) {
let pos = {
lat: position.coords.latitude,
lng: position.coords.longitude
};
Mapping.setPosition(pos);
Mapping.open(Mapping.map);
Mapping.map.setPosition(pos);
})
}
// JS CODE END
}
</script>
</head>
<body>
<!-- HTML CODE GOES HERE-->
<button onclick="userCode()">Get Location</button>
<div id="mapid" style="width: 600px; height: 400px;"></div>
</body>
</html>
解决方案
利用
Mapping.resetLocation({lat:pos.lat,lon:pos.lng});
代替
Mapping.setPosition(pos);
推荐阅读
- c# - 有效检查 DataTable 中的任何单元格是否包含子字符串
- javascript - 在浅拷贝/克隆上更新 eventListener
- jboss - 配置为 JCache 时如何从 Infinispan 缓存中获取高级缓存或配置事务管理器?
- ionic-framework - 如何在离子输入旁边对齐离子段 - Ionic4
- python - 有没有办法复制一个目录的内容(仅文件)而不遍历该目录中的所有文件?
- sockets - 如何通过 Dart 套接字发送修改后的字节?
- angular - 无法编译 Angular 应用程序
- c++ - 如何找出我的 dll 附加到哪个进程?
- html - 在 Angular 4 中的组件之间导航
- java - 如何解密在 Obj-c 中加密的 Java 数据