- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在从数据库加载标记,然后在标记之间绘制多段线。我使用折线来计算总距离,而不必计算从标记 a 到标记 b 再到标记 c 等的距离。
然而,我的距离不准确,因为如果两个标记围绕一条弯曲的道路,折线只是连接它们而不是沿着道路绘制。
我知道这在 Google Maps API 中是可能的,但使用限制不适合我,这就是我决定使用传单的原因。
我的标记之间并没有那么远,因为我的 GPS 设备每 10 秒发送一次位置。
我找到了 leaflet-routing-machine插件,我想知道我是否可以使用它来使我的多段线捕捉到道路上?
这就是我在 map 上添加标记的方式:
function getlocationsfromdb(){
group.clearLayers();
latlngArray.length=0;
var deviceid = $("#selectid").val();
$.ajax({
type: "POST",
url: "functionhandlers/getlocations.php",
data: {deviceid:deviceid,start:start,end:end},
dataType: 'json',
cache: false,
})
.success(function(response) {
$('input').removeClass('error').next('.errormessage').html('');
if(!response.errors && response.result) {
$.each(response.result, function( index, value) {
var latlng = L.latLng(value[7], value[8]);
var marker = L.circleMarker(latlng,{radius:2}).addTo(group);
latlngArray.push(latlng);
});
var polyline = L.polyline(latlngArray, {color: '#605ca8'}).addTo(group);
map.fitBounds(group.getBounds());
var distancetravelled=polyline.measuredDistance();
$("#distancetravelled").html(distancetravelled);
} else {
$.each(response.errors, function( index, value) {
// add error classes
$('input[name*='+index+']').addClass('error').after('<div class="errormessage">'+value+'</div>')
});
}
});
}
有人能给我指出正确的方向吗?
最佳答案
这可以通过 leaflet-routing-machine 轻松完成。您可以在初始化路由控件时将 waypoints
设置为 latlngArray
:
var control = L.Routing.control({
waypoints: latlngArray,
show: false,
waypointMode: 'snap',
createMarker: function() {}
}).addTo(map);
这里,show: false
使控件不显示在 map 上,而空的 createMarker
函数会覆盖路由机器创建的默认标记,而不是什么都不做(尽管当我们移除控件时,标记将被移除,这只是防止它们在找到路线时在屏幕上闪烁。
您可以通过监听routeselected
事件来提取路由机器结果的所有顶点,该事件将返回一个IRoute
object。其中包含路线的所有方向和几何形状。将 .route.coordinates
放在新的 L.polyline
对象中将保留路线,这样我们就可以摆脱路线控制:
control.on('routeselected', function(e) {
L.polyline(e.route.coordinates).addTo(group);
map.removeControl(control);
});
在填充 latlngArray
后立即将上述代码块放入 .success
回调函数中,应该会为您提供所需的路线。这是一个在工作中展示这一点的 fiddle :
http://fiddle.jshell.net/nathansnider/ygktexbj/
此外,如果您没有将路由控件用于其他任何用途,并且不想让它完全显示出来(在计算路由时,一个白色的小控件框可能仍会出现),您可以简单地将它隐藏在 CSS 中:
.leaflet-routing-container {
display:none;
}
关于javascript - 使多段线与传单中的道路对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56287699/
我正在制作一个基于网格的游戏。 在这个游戏中,您可以放置建筑物、墙壁和道路。 当某些东西被放置在网格中时,我将单元格 ID 设置为该对象 ID。到目前为止一切顺利,一切正常。 当我需要时,我的问题
我想创建一个交互式 map ,其中道路等的样式为我想要的颜色。现在,我了解了 Mapbox,但这不是我们想要使用的,因为最终它会因为费用而花费我们很多钱。 我一直在互联网上寻找替代方案。我发现了很多拼
我正在尝试用 Java 制作一个正则表达式,它可以粗略地用于匹配某些街道名称。我想这样做,以便给定以下字符串: Then someone decided to go to the high stree
尝试用颜色“标记”一个区域并在该区域放置一个数字: 我在这里说明了它: 数字是静态的,不会改变。 区域标记假设会改变颜色。并且区域标记假设使用周围的街道/道路包围该区域(不仅仅是简单的圆形图) 我会尝
我需要能够使用 V2 或 V3(最好是 3)创建在某种意义上忽略建筑物的路径。 我什至试图创建一个 kml 文件来自己绘制所有路径,然后找到一些方法根据需要打开/关闭它们。 例如。用户想从 A 点到
我在 http://www.41latitude.com/post/1268734799/google-styled-maps 上找到了一个代码片段: [ { featureType: "
我正在使用 Roads Google API 传递一个位置列表,我想根据这些点在最有可能由汽车行驶的道路上画线。 有些地方出了问题,因为有些点没有被线穿过,而且这些线不仅仅使用道路,有些点通过直线穿过
我们如何使用切换按钮在 Mapbox gl js 中突出显示(更改颜色)道路、人行道或自行车道? 最佳答案 您可以使用setPaintProperty更改图层的填充颜色,就像在官方 Mapbox 示例
我正在尝试在道路上绘制一条路径并遵循一些给定的点。我正在使用 Google Directions API 来遵循道路。我在道路上放置了一些标记并将这些点与折线连接起来。我需要遵循红线但是它跟随并绘制蓝
我是一名优秀的程序员,十分优秀!