gpt4 book ai didi

javascript - 在 Leaflet 中绘制一条跟随移动标记的折线

转载 作者:太空宇宙 更新时间:2023-11-04 14:27:15 24 4
gpt4 key购买 nike

我有一个问题,我正在使用 Leaflet 并每 2 秒获取一次 GPS 坐标,与 map 上的移动对象有关,我成功地每 2 秒基于 gps 坐标创建了一个移动标记,但后来我无法绘制多段线在标记之后。

你有什么想法吗?谢谢

     var redraw = function(p3DMessage){

lat = parseFloat(p3DMessage.lat);
lng = parseFloat(p3DMessage.lon);
console.log(lat)
console.log(lng)


if (theMarker != undefined) {
mymap.removeLayer(theMarker);
};


var polylinePoints = [[lat, lng]];

//failed to draw polyline...
//L.polyline([[lat, lng]]).addTo(mymap);

theMarker = L.marker([lat,lng]).addTo(mymap);
};

最佳答案

Polyline.addLatLng允许您向现有多段线添加一个点。

因此构建您的 map ,添加一条多段线并在您的绘图函数的每个刻度处添加一个点。请注意,您也可以重复使用您的标记。有点像

var map = L.map(document.getElementById('map')).setView([48.8583736, 2.2922926], 15);

L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', {
attribution: '&copy; <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
}).addTo(map);

var marker = null;
var line = L.polyline([]).addTo(map);

function redraw (p3DMessage) {
var lat = parseFloat(p3DMessage.lat),
lng = parseFloat(p3DMessage.lon),
point = {lat: lat, lng: lng};

if (!marker) {
marker = L.marker(point).addTo(map)
}

line.addLatLng(point);
marker.setLatLng(point);
}

还有一个演示

var map = L.map(document.getElementById('map')).setView([48.8583736, 2.2922926], 15);

L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', {
attribution: '&copy; <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
}).addTo(map);

var points = [
{lat: 48.857, lon:2.2922926},
{lat: 48.858, lon:2.291},
{lat: 48.859, lon:2.293},
{lat: 48.860, lon:2.294},
{lat: 48.862, lon:2.294},
];

var marker = null;
var line = L.polyline([]).addTo(map);

function redraw(point) {
if (!marker) {
marker = L.marker(point).addTo(map)
}
line.addLatLng(point);
marker.setLatLng(point);
}

function update() {
if (points.length) {
redraw(points.shift());
setTimeout(update, 1000);
}
}
setTimeout(update, 1000);
html, body {
height: 100%;
margin: 0;
}
#map {
width: 100%;
height: 100%;
}
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.2.0/dist/leaflet.css" integrity="sha512-M2wvCLH6DSRazYeZRIm1JnYyh22purTM+FDB5CsyxtQJYeKq83arPe5wgbNmcFXGqiSH2XR8dT/fJISVA1r/zQ==" crossorigin=""/>
<script src="https://unpkg.com/leaflet@1.2.0/dist/leaflet.js" integrity="sha512-lInM/apFSqyy1o6s89K4iQUKg6ppXEgsVxT35HbzUupEVRh2Eu9Wdl4tHj7dZO0s1uvplcYGmt3498TtHq+log==" crossorigin=""></script>

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/leaflet.draw/0.4.12/leaflet.draw.css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/leaflet.draw/0.4.12/leaflet.draw.js"></script>

<div id='map'></div>

关于javascript - 在 Leaflet 中绘制一条跟随移动标记的折线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46972528/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com