创建合适的导航路径
Create a proper path for navigation
我必须为船只创建一个导航路径。所有的船都来到一个中心点,在那里停一会儿。船的坐标和中心点(母舰)来自数据库。
选择数据的代码。中心点是静态的
<?php
$sqlqry = "SELECT * FROM ship WHERE id=" . $id . " AND start_date BETWEEN '" . $s_date . "' AND '" . $e_date . "'";
$result = mysqli_query($bd, $sqlqry);
$locations = array();
$counter=0;
while($row = mysqli_fetch_array($result)) {
array_push($locations, $row);
}
$nrows = mysqli_num_rows($result);
?>
问题是有一些船是从水中的中心点出发的。他们应该从陆地开始和结束。
就像这里,你可以看到一艘船在红线的起点(陆地),一艘在绿线的起点(在中心点所在的水中)。
这是我的google maps JavaScript部分的初始化部分。
var nrows = <?php echo json_encode($nrows,JSON_NUMERIC_CHECK);?>;
var locMatrix = <?php echo json_encode($locations,JSON_NUMERIC_CHECK);?>;
var m_ship_rows = <?php echo json_encode($m_ship_rows,JSON_NUMERIC_CHECK);?>;
var m_ship = <?php echo json_encode($m_ship,JSON_NUMERIC_CHECK);?>;
var line;
var line1;
var lineArray = [];
var lineArray1 = [];
var DrivePath = [];
// This example adds an animated symbol to a polyline.
function initMap() {
var intervalForAnimation;
var count = 0;
var n = 2;
for(var i=0;i<=nrows-1;i++)
{
console.log(DrivePath[i]);
DrivePath.push(new google.maps.LatLng(locMatrix[i][1], locMatrix[i][2]),
new google.maps.LatLng(17.8674, 66.543),
new google.maps.LatLng(locMatrix[i][3], locMatrix[i][4]));
}
var Colors = [
"#FF0000",
"#00FF00",
"#0000FF",
"#FFFFFF",
"#000000",
"#FFFF00",
"#00FFFF",
"#FF00FF"
];
完整的代码在JSFiddle.
你也可以访问我的github repo获取整个代码。
http://github.com/Tejas-Nanaware/ship-scheduling-and-animation-tool我找到了一个不同的解决方案,这在一定程度上帮助了我。
// Create the polyline and add the symbol to it via the 'icons' property.
for(var i=0; i <=nrows; i++)
{
var line = new google.maps.Polyline({
path: [{lat: locMatrix[i][1], lng: locMatrix[i][2]},
{lat: 17.8674, lng: 66.543},
{lat: locMatrix[i][3], lng: locMatrix[i][4]}],
icons: [{
icon: lineSymbol,
offset: '100%'
}],
strokeColor: '#000000',
strokeOpacity: 1.0,
map: map
});
animateCircle(line);
}
animateCircle()函数:
function animateCircle(line) {
var count = 0;
window.setInterval(function() {
count = (count+0.5) % 200;
var icons = line.get('icons');
icons[0].offset = (count / 2) + '%';
line.set('icons', icons);
}, 20);
}
我想问题是由于您的开始日期有一个左闭间隔。确实有一些船在起始日期之后才从母船出发,但事实上,它们从陆地出发的实际日期比你参数化的起始日期要早。所以,你需要决定如何处理那些在你的开始日期已经在旅途中的船只,但在那一天到这一刻之间,它们也在一艘母船上。如果不想显示它们的路径,则需要排除它们。如果您想要收集这些船只的早期事件,那么您将需要为这些特定船只运行另一个选择以收集早期数据。在任何情况下,您都需要一个函数,该函数将获得船舶的起点,并确定它是母船还是干地。
相关文章:
- 单击顶部导航时如何进行向下滚动效果(向下滑动).
- angular 1.5应用程序中的导航栏
- Javascript:使用绝对路径设置img src
- 无法从jquery Mobile导航栏重定向到另一个页面
- 如何在d3.js中返回路径的y坐标
- 复制图像路径以单击它
- 引导程序:在导航栏中,显示悬停在单个位置的基于Li Link的不同内容
- Jquery-如何将活动类添加到整个导航菜单路径中
- WebBrowser DocumentText 无法在不提供完整路径的情况下导航 javascript
- 跟踪 URL 中的 Div 导航路径
- URI 路径导航问题
- 使用 redux-simple-router 导航到另一条路径
- 如何在使用javascript或Jquery导航到其他页面时替换路径
- 粘性导航使用路径点调整大小的问题
- 谷歌地图路线方向路径颜色改变导航仪从一个航路点移动到另一个航路点
- jQuery路径点粘性导航,当通过点击向上滚动是1px off
- 创建合适的导航路径
- Angular 2基于角色的相同路径导航
- jQuery路径点导航条
- 基于URL路径的Javascript/jQuery导航