- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
美好的一天!我有一个使用 cordova (html 和 javascript)的 native 应用程序。当用户更改其位置或坐标更改时,我需要帮助实时移动 map 上的标记。
这是mapping.js
的完整源代码
var mbAttr =
'Map data © <a href="https://www.openstreetmap.org/">OpenStreetMap</a> contributors, ' +
'© <a href="https://www.mapbox.com/">Mapbox</a>',
mbUrl =
"https://api.tiles.mapbox.com/v4/{id}/{z}/{x}/{y}.png?access_token=pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4NXVycTA2emYycXBndHRqcmZ3N3gifQ.rJcFIG214AriISLbB6B5aw";
var redIcon = new L.Icon({
iconUrl:
"https://cdn.rawgit.com/pointhi/leaflet-color-markers/master/img/marker-icon-2x-red.png",
shadowUrl:
"https://cdnjs.cloudflare.com/ajax/libs/leaflet/0.7.7/images/marker-shadow.png",
iconSize: [25, 41],
iconAnchor: [12, 41],
popupAnchor: [1, -34],
shadowSize: [41, 41]
});
var violetIcon = new L.Icon({
iconUrl:
"https://cdn.rawgit.com/pointhi/leaflet-color-markers/master/img/marker-icon-2x-violet.png",
shadowUrl:
"https://cdnjs.cloudflare.com/ajax/libs/leaflet/0.7.7/images/marker-shadow.png",
iconSize: [35, 51],
iconAnchor: [17, 51],
popupAnchor: [1, -34],
shadowSize: [51, 51]
});
var streets = L.tileLayer(mbUrl, { id: "mapbox.streets", attribution: mbAttr });
var mymap;
var locationHistory = [];
var watch;
function f1(a, b) {
lat = a;
lon = b;
mymap = L.map("mapid", {
center: [14.54965, 121.00737],
zoom: 16,
layers: [streets]
});
L.marker([14.4311, 120.9682], { icon: violetIcon })
.addTo(mymap)
.bindPopup("New Bacoor City Hall");
L.marker([a, b], { icon: redIcon })
.addTo(mymap)
.bindPopup("You are here.")
.openPopup()
.update();
}
function getLocation() {
navigator.geolocation.getCurrentPosition(showPosition, showError);
}
function showPosition(position) {
f1(position.coords.latitude, position.coords.longitude);
}
function showHistory() {
var el = document.getElementById("historyWrapper");
if (el.style.display === "none") {
el.style.display = "block";
} else {
el.style.display = "none";
}
}
function startWatching() {
var toastHTML = "Tracking started...";
M.toast({html: toastHTML, displayLength: 3000});
watch = navigator.geolocation.watchPosition(onSuccess, onError, {
maximumAge: 10000,
timeout: 5000,
enableHighAccuracy: true
});
var el = document.getElementById("historyWrapper");
el.style.display = "none";
}
function stopWatching() {
if (confirm("Do you want to stop tracking?")) {
var toastHTML = "Tracking Stopped.";
M.toast({html: toastHTML, displayLength: 3000});
navigator.geolocation.clearWatch(watch);
var el = document.getElementById("locationHistory");
locationHistory.forEach(function(location) {
el.innerHTML =
"<li>Latitude: " +
location.coords.latitude +
"<br />" +
"Longitude: " +
location.coords.longitude +
"<br />" +
"<strong>Date: " +
new Date().toLocaleString() +
"</strong><hr /></li>" +
el.innerHTML;
});
document.getElementById("historyWrapper").style.display = "block";
document.getElementById("geolocation").innerHTML = "";
}
}
function showError(error) {
switch (error.code) {
case error.PERMISSION_DENIED:
var toastHTML = "User denied the request for geolocation.";
M.toast({html: toastHTML, displayLength: 3000});
break;
case error.POSITION_UNAVAILABLE:
var toastHTML = "Location information is unavailable.";
M.toast({html: toastHTML, displayLength: 3000});
break;
case error.TIMEOUT:
var toastHTML = "The request to get user location timed out.";
M.toast({html: toastHTML, displayLength: 3000});
break;
case error.UNKNOWN_ERROR:
var toastHTML = "An unknown error occurred.";
M.toast({html: toastHTML, displayLength: 3000});
break;
}
window.close();
}
function onSuccess(position) {
locationHistory.push(position);
var element = document.getElementById("geolocation");
element.innerHTML = "";
element.innerHTML =
"Latitude: " +
position.coords.latitude +
"<br />" +
"Longitude: " +
position.coords.longitude +
"<br />" +
"<hr />" +
element.innerHTML;
}
function onError(error) {
var toastHTML = "code: " + error.code + "\n" + "message: " + error.message + "\n";
M.toast({html: toastHTML, displayLength: 3000});
}
getLocation();
所以,我的 html 文件上有 3 个按钮,它们调用 js 文件中的 3 个函数 - startWatching()
、 stopWatching()
和 showHistory( )
function startWatching()
将在用户移动或更改位置时监视坐标。function stopWatching()
将停止观看或获取坐标。函数 showHistory()
将显示观察到的坐标列表。
var redIcon
是 getLocation()
之后用户位置的标记var violetIcon
是定义位置的标记
函数 f1(a, b)
将在 map 上显示 2 个标记 - 一个标记用于定义的位置,另一个标记是当 function getLocation( )
发生。
现在,当用户更改其位置或在 map 上生成新坐标时,我需要移动用户位置的标记。我希望有人能在这方面帮助我。提前致谢`
最佳答案
您需要在 f1
函数之外访问您的用户标记。您可以通过将标记分配给全局定义的变量来完成此操作。
在全局范围内定义标记变量。
var userMarker = null;
在您的 f1
函数中,将创建的标记分配给 userMarker
变量。
function f1(a, b) {
...
userMarker = L.marker([a, b], { icon: redIcon })
.addTo(mymap)
.bindPopup("You are here.")
.openPopup()
.update();
}
现在,当用户的位置已更新时,您可以在 onSuccess
函数中使用 userMarker
标记实例。使用setLatLng()
方法用新坐标更新标记的位置。
function onSuccess(position) {
// Destructure assignment to get the lat and long from the position object.
let { latitude, longitude } = position.coords;
if (userMarker !== null) {
userMarker.setLatLng([latitude, longitude]);
}
}
关于javascript - 当用户更改位置或坐标更改时更新 map 上标记的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60914119/
我正在尝试使用 tkinter 创建一个类似点击器的游戏作为练习。我对 tkinter 很陌生,所以如果问题非常基本,我深表歉意。我设置了一个按钮来添加点击次数,并且我还尝试设置自动点击功能。我的代码
我想以特定方式更新表 A 中的第 1 列:当列中的第三个字符是“_”时,我想插入前 2 个字符,如果第三个字符还有其他任何内容,我想保留它是。 例子: |col1|
我用 View 模型组装了一个简单的登录 fragment 。这是 fragment : class LoginFragment : Fragment() { companion object {
是否可以在 mySQL 中的创建表语句中编写更新语句?假设我们有两个不同的表。当我在一个表上插入某些内容时,我想更改另一表中的值。这在 mySQL 中可能吗 最佳答案 需要更多规范。 如果您有 2 个
我组合了一个简单的发布/订阅模式,以允许动态实例化和运行多个 JavaFX 类。这些类中的每一个(“订阅者”)都旨在可视化来自具有“发布者”角色的模型(在模型/ View / Controller 意
我正在使用 pygame 并在主循环的每个循环中更新到屏幕。我不明白的是,在我添加一个 for 循环查找事件之前,什么都不会更新,然后突然所有更新都发生了。这是为什么? def run(self
我是 React 的初学者;我知道 setState 是异步的,但我不明白为什么在示例笔中下方框下方的刷新不会立即完成,而仅在输入第二个字符后才更新。 Codepen:(已更新以链接到正确的笔) ht
我在 Java 程序中有两个选项卡。一个用于添加股票,另一个用于列出我创建的股票。当我在第二个选项卡中添加新项目时,我试图设法更新第一个选项卡中的项目列表。有任何想法吗? 我希望第一个选项卡显示我在第
我有一个 Activity A。加载 A 后,单击 A 中的按钮会在 A 的主页布局上添加 fragment F。现在一旦进入 F,如果我正在调用 getActivity().getSupportFr
下面提供的这段代码中的 friend 们,我想在从播放 Intent 恢复时刷新我的 TextView 。但是每当我尝试在 OnCreate 之外但在我的主类中定义我的 textview 时(在 st
我是 Postgres 的新手。我正在尝试使用 java/postgres jdbc 执行以下代码(适用于 MySQL): for (int i = 0; i < arr.size(); i++) {
目前,我有一个更新函数,可以更新一行,但如果我将其中一个框留空,而不是不更改该值,则该值将被删除。如果我只需要更新其中一个值,我想更新该值并将其他框留空。这可能吗? 目前我的代码是这样的。 最佳答案
我正在编写 JavaScript,它正在为一个项目计数到一定数量。数量可能在 100,000 左右,完成处理大约需要 10-15 秒。我希望脚本在用户调用页面时立即运行,并在脚本完成时进行重定向。是否
每当具有不同输入 ID 的另一个 selectInput 的值发生变化时,我需要更改一个具有自己输入 ID 的 selectInput 的值。 在 javascript 中,这将是 onchage,但
我正在尝试弄清楚如何在将视频上传到服务器时更新我的 UIProgressView。该视频是用户选择的视频,这是我上传到我的服务器的代码: NSMutableArray *array = [[NSM
我想在单击 h:commandButton 时更新 id="contents"的 div,但复杂的部分是 h:commandButton 位于 c:forEach Click Me
我目前正在构建一个读取数组并将其显示在 TableView 上的 UITableView。我不断地添加到数组中,我希望在 View 上有一个按钮,一旦单击它就会更新 UITableView。 如何从我
我在 StructuredProperty 中有一个 ComputedProperty,它在首次创建对象时不会更新。 当我创建对象时 address_components_ascii 没有被保存。该字
我知道 SCNPhysicsBody 在节点缩放时不会缩放,但我还没有找到解决此问题的好方法。我想缩放节点,然后在缩放后将 SCNPhysicsBody 更新为节点。 let box = SCNBox
我在自定义 UITableViewCell 中有一个 UILabel,当设备旋转时,它会调整大小。旋转后需要重新计算此标签中的文本,因为我要将其缩小到适当大小并在末尾附加一些文本。 例如数据模型有:“
我是一名优秀的程序员,十分优秀!