我目前正在爲Cesium開發一個實時跟蹤應用程序,但當我在瀏覽器中顯示該點時遇到了一些問題。銫現場更新一個點?
到目前爲止,我的Cesium查看器從服務器接收數據(採用JSON格式),並在地圖上正確顯示點,但更新地圖上位置的唯一方法是刷新頁面。請注意,它正在讀取位置的location.json文件每秒都會從服務器更新一個新位置。
現在我想它會這樣做,因爲客戶端代碼沒有「更新」功能來動態更改地圖上的點位置。
那麼讓Cesium不斷更新地圖上的點而不需要用戶不斷刷新頁面的最簡單方法是什麼?根據我的研究,我發現了一些涉及流式傳輸CZML文件或將JSON變成數據源的例子,但這些看起來似乎有點複雜,似乎是一項簡單的任務。是否沒有一個簡單的「更新」功能可以動態改變點?
這裏是我的客戶端代碼:
<!DOCTYPE html>
<html lang="en">
<head>
<!-- Use correct character set. -->
<meta charset="utf-8">
<!-- Tell IE to use the latest, best version (or Chrome Frame if pre-IE11). -->
<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
<!-- Make the application on mobile take up the full browser screen and disable user scaling. -->
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no">
<title>Hello World!</title>
<script src="../Build/Cesium/Cesium.js"></script>
<style>
@import url(../Build/Cesium/Widgets/widgets.css);
html, body, #cesiumContainer {
width: 100%; height: 100%; margin: 0; padding: 0; overflow: hidden;
}
</style>
</head>
<body>
<div id="cesiumContainer"></div>
<script>
var viewer = new Cesium.Viewer('cesiumContainer');
Cesium.loadJson('/location.json').then(function(data) {
console.log(data);
viewer.entities.add({
name : data.name,
position : Cesium.Cartesian3.fromDegrees(data.lon, data.lat),
point : {
pixelSize : 5,
color : Cesium.Color.RED,
outlineColor : Cesium.Color.WHITE,
outlineWidth : 2
},
label : {
text : data.name,
font : '14pt monospace',
style: Cesium.LabelStyle.FILL_AND_OUTLINE,
outlineWidth : 2,
verticalOrigin : Cesium.VerticalOrigin.BOTTOM,
pixelOffset : new Cesium.Cartesian2(0, -9)
}
});
viewer.zoomTo(viewer.entities);
});
</script>
</body>
</html>
如果你需要從我的任何信息,我會很樂意提供。
謝謝!
因爲它似乎你只有一個指向跟蹤然後調用首次加載JSON時添加newPoint,後續加載updatePosition。然後,您可以定期或根據某個適合您的用戶操作調用此功能。 –
很好用,稍微調整一下它的工作方式吧!謝謝! – SirFerret