js 百度地图 大地线路图起点和终点经纬度一致
在使用JavaScript编写百度地图大地线路图时,如果起点和终点的经纬度是完全一致的话,可能会导致线路无法显示或显示异常。这是由于大地线路图是根据给定的起点和终点经纬度计算出一条线路,如果起点和终点的经纬度完全相同,那么无法计算出线路的具体路径,从而导致无法正常显示。
如果要在地图上显示一个点,可以考虑将起点和终点的经纬度设置成略微不同的值,例如在终点的经度或纬度上加上一个极小的偏移量。这样就能够在地图上清晰地显示起点和终点的位置,并且不会出现线路无法显示的问题。
另外,如果需要在地图上标记起点和终点,也可以分别使用标记功能来标注这两个位置,而不必依赖于大地线路图来显示路径。这样可以更清晰地展示起点和终点的位置,同时也避免了因为起点和终点经纬度一致而导致的显示问题。
在使用JS编写百度地图大地线路图时,需要留意起点和终点经纬度的设置,以确保能够正常显示线路并标记起点和终点。
uniapp H5使用window.location.href跳转百度地图,传参起点经纬度,起点名称,终点经纬度,终点名称
在UniApp开发H5应用时,如果你想要通过window.location.href
跳转到百度地图,并传递起点、终点的位置信息以及名称,你可以构造一个包含查询参数的URL。百度地图API通常接受这样的参数格式:
- 起点经纬度:可以表示为
?start lat=起点纬度&start lng=起点经度
- 起点名称:如果需要显示在搜索框中,可以在URL里直接编码,如
start_name=起点名称%E7%A7%BB%E5%8A%A8%E5%9C%B0
- 终点经纬度:同样表示为
end lat=终点纬度&end lng=终点经度
- 终点名称:同理,
end_name=终点名称%E7%A7%BB%E5%8A%A8%E5%9C%B0
示例URL:
window.location.href = "https://map.baidu.com/?start lat=39.915434&start lng=116.409529&start_name=%E5%A4%A7%E5%8D%8E%E5%B8%82%E5%B9%BF%E4%B8%9C%E5%9C%B0&end lat=39.904211&end lng=116.408049&end_name=%E5%8C%97%E4%BA%AC%E5%B8%82%E5%9C%B0";
请注意,在实际应用中,你需要将这些经纬度替换为你从用户输入获取的实际值。同时,百度地图API可能会有特定的参数命名规则,最好查阅官方文档确认。
怎样用百度地图绘制动画轨迹,并在结束后标明起点终点及经纬度
您可以使用百度地图API来实现绘制动画轨迹并标明起点终点及经纬度。下面是一个简单的步骤:
- 注册百度开发者账号,并创建一个应用,获取应用的AK(Access Key)。
- 引入百度地图API的JavaScript库。
- 创建地图容器,初始化地图对象。
- 使用百度地图API的路线规划服务,获取经过的路线点。
- 使用百度地图API的覆盖物类,创建动画轨迹并添加到地图上。可以使用标注类来标记起点终点及经纬度。
- 等待动画播放完成后,显示起点终点及经纬度的标注。
下面是一个示例代码,可以参考并根据自己的需求进行修改:
// 初始化地图容器
var map = new BMap.Map("map-container");
map.centerAndZoom(new BMap.Point(116.404, 39.915), 12);
// 获取路线点
var driving = new BMap.DrivingRoute(map, {
onSearchComplete: function(results){
if (driving.getStatus() == BMAP_STATUS_SUCCESS){
var points = results.getPlan(0).getRoute(0).getPath();
// 创建动画轨迹
var polyline = new BMap.Polyline(points, {strokeColor:"blue", strokeWeight:3, strokeOpacity:0.5});
map.addOverlay(polyline);
// 创建起点终点标注
var startMarker = new BMap.Marker(points[0]);
var endMarker = new BMap.Marker(points[points.length - 1]);
map.addOverlay(startMarker);
map.addOverlay(endMarker);
// 创建经纬度标注
var startPoint = new BMap.Label(points[0].lng + "," + points[0].lat, {offset:new BMap.Size(20,-10)});
var endPoint = new BMap.Label(points[points.length - 1].lng + "," + points[points.length - 1].lat, {offset:new BMap.Size(20,-10)});
startMarker.setLabel(startPoint);
endMarker.setLabel(endPoint);
// 播放动画轨迹
var i = 0;
var timer = setInterval(function(){
if (i >= points.length){
clearInterval(timer);
// 显示起点终点及经纬度标注
map.addOverlay(startMarker);
map.addOverlay(endMarker);
startMarker.setLabel(startPoint);
endMarker.setLabel(endPoint);
return;
}
var p = points[i];
polyline.setPositionAt(i, p);
i++;
}, 10);
}
}
});
driving.search("北京市海淀区中关村南大街27号", "北京市朝阳区建国门外大街1号");
注意,上述代码中的起点和终点坐标是写死的,您可以根据自己的需求进行修改。此外,还可以使用其他覆盖物类来创建更加丰富的图层效果,比如自定义图标等。