下面的代码解决了自定义绘制驾车路线、调整视野以便显示起点和终点、自定义起点终点的标记。
http://www.cnblogs.com/jz1108/archive/2011/09/23/2185444.html
引用
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>驾车导航</title>
<script src="http://api.map.baidu.com/api?v=1.2"></script>
</head>
<body>
<div id="container" style="width:400px;height:248px"></div>
<div id="panel" style="position:absolute;left:420px;top:10px"></div>
<script>
var map =new BMap.Map('container');
map.centerAndZoom(new BMap.Point(116.404, 39.915), 11);
var driving =new BMap.DrivingRoute(map, {
onSearchComplete: function(results){
if (driving.getStatus() == BMAP_STATUS_SUCCESS) {
// 地图覆盖物
addOverlays(results);
// 方案描述
addText(results);
}
}
});
driving.search('圆明园', '西单');
// 添加覆盖物并设置视野
function addOverlays(results) {
// 自行添加起点和终点
var start = results.getStart();
var end = results.getEnd();
addStart(start.point, start.title);
addEnd(end.point, end.title);
var viewPoints = [start.point, end.point];
// 获取方案
var plan = results.getPlan(0);
// 获取方案中包含的路线
for (var i =0; i < plan.getNumRoutes(); i ++) {
addRoute(plan.getRoute(i).getPath());
viewPoints.concat(plan.getRoute(i).getPath());
}
// 设置地图视野
map.setViewport(viewPoints, {
margins: [40, 10, 10, 10]
});
}
// 添加方案描述
function addText(results) {
var plan = results.getPlan(0);
// 获取方案中包含的路线
var htmls = [];
for (var i =0; i < plan.getNumRoutes(); i ++) {
var route = plan.getRoute(i);
for (var j =0; j < route.getNumSteps(); j ++) {
var curStep = route.getStep(j);
htmls.push((j +1) +'. '+ curStep.getDescription() +'<br />');
}
}
var panel = document.getElementById('panel');
panel.innerHTML = htmls.join('');
panel.style.lineHeight ='1.4em';
panel.style.fontSize ='12px';
}
// 添加起点覆盖物
function addStart(point, title){
map.addOverlay(new BMap.Marker(point, {
title: title,
icon: new BMap.Icon('blue.png', new BMap.Size(38, 41), {
anchor: new BMap.Size(4, 36)
})}));
}
// 添加终点覆盖物
function addEnd(point, title){
map.addOverlay(new BMap.Marker(point, {
title: title,
icon: new BMap.Icon('red.png', new BMap.Size(38, 41), {
anchor: new BMap.Size(4, 36)
})}));
}
// 添加路线
function addRoute(path){
map.addOverlay(new BMap.Polyline(path, {
strokeColor: '#333',
enableClicking: false
}));
}
</script>
</body>
</html>
以下是自定义绘制驾车路线的完整代码
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<script type="text/javascript" src="http://api.map.baidu.com/api?v=1.4"></script>
<title>导航测试</title>
</head>
<body>
<div id="mapDiv" style="width:600px;height:500px"></div>
</body>
<script type="text/javascript">
var map= new BMap.Map('mapDiv');
var point = new BMap.Point(106.674, 26.580);
map.centerAndZoom(point , 10);
map.addControl(new BMap.NavigationControl());
map.addControl(new BMap.ScaleControl());
var options = {
onSearchComplete: function(results){
if (driving.getStatus() == BMAP_STATUS_SUCCESS){
addOverlays(results);
}
}
};
function addOverlays(results){
// 自行添加起点和终点
var start = results.getStart();
var end = results.getEnd();
var viewPoints = [start.point, end.point];
// 获取方案
var plan = results.getPlan(0);
for (var i =0; i < plan.getNumRoutes(); i ++) {
addRoute(plan.getRoute(i).getPath());
viewPoints.concat(plan.getRoute(i).getPath());
}
// 设置地图视野
map.setViewport(viewPoints, {
margins: [40, 10, 10, 10]
});
}
//在贵州范围内搜索
var driving = new BMap.DrivingRoute("贵州省",options);
driving.search("贵阳","开阳县");
driving.search("贵阳" , "铁厂乡");
// 添加路线
function addRoute(path){
map.addOverlay(new BMap.Polyline(path, {
strokeColor: '#333',
enableClicking: false
}));
}
</script>
</html>
附件中是一个更完整的代码,可直接显示结果。
分享到:
相关推荐
下面将详细讲解如何利用百度地图API实现自定义地图图层,以及如何添加标记、搜索自定义标记以及显示路线方案。 1. **创建自定义图层** 百度地图API提供了`BMap.MapType`对象,通过这个对象我们可以设置地图显示的...
在"绘制路线"方面,百度地图API提供了驾车、步行、骑行等多种路径规划方式。开发者需要指定起始点和目的地的坐标,API会返回包含多个途经点的详细路径信息,包括每个路段的距离、预计耗时等。通过解析这些信息,我们...
"百度地图API详解之公交导航_自定义覆盖物.png"表明了API不仅可以展示基本的地图,还可以进行公交导航,提供不同交通方式(步行、自行车、公交车、开车)的路径规划。例如,开发者可以利用API获取从一个地点到另一个...
本文将深入探讨如何使用JS高德地图API来模拟驾车路线规划并绘制代码,以便开发者能够更好地理解和应用这项技术。 首先,我们要理解高德地图API的基本用法。在JavaScript中,我们需要引入高德地图的库文件,这通常...
4. **路径规划**:包括驾车、步行、骑行等不同模式的路径规划,并能在地图上绘制路径。 5. **事件响应**:如何监听用户的地图操作,如拖动、缩放等,并作出相应反应。 6. **自定义覆盖物**:创建和显示自定义图标、...
综上所述,百度地图API的“路线规划”和“自定义图层”功能提供了丰富的地图开发可能性。通过MapDemo这样的示例项目,我们可以学习如何利用这些工具创建交互性强、信息丰富的地图应用。对于开发者来说,熟练掌握这两...
5. **路径规划**:结合百度地图的路线规划API,该包可能能够帮助用户计算两点或多点之间的最佳行驶路线,包括驾车、步行和公交等多种交通方式。 6. **热力图**:对于大量点数据,用户可以生成热力图,直观地展示...
5. **路径规划**:百度地图API支持公交、驾车、步行等多种路线规划,开发者可以根据起终点坐标计算最佳路径,并在地图上绘制路线。 6. **地理编码与反地理编码**:将地址转换为坐标(地理编码)和将坐标转换回地址...
提供起点和终点,使用百度地图API计算并展示驾车、公交或步行的最佳路线。 5. **地理编码示例** 输入地址,调用地理编码接口获取坐标,再在地图上显示。 6. **地图事件监听** 监听地图的点击事件,当用户点击...
百度地图API支持多种路线规划,包括驾车、公交、步行等。RoutePlanningEngine类可以帮助计算最佳路线,并在地图上绘制路径。开发者还可以根据需求设置起点、终点和途经点。 **7. 信息窗口** 信息窗口可以显示在地图...
接收到规划结果后,我们需要根据返回的步骤数据,自定义绘制公交路线。可以创建一个新的Overlay类,覆盖onDraw方法,在这里绘制路线,包括不同公交线路的颜色和线宽,以及转乘站点的图标。 5. **UI交互**: 设计...
在百度地图API接口中,这些接口提供了各种地图相关的功能,例如加载地图、设置地图视图、添加标记、绘制路线、获取定位信息等。 在Android开发环境中,集成百度地图API主要涉及以下几个步骤: 1. **注册并获取API...
【路线规划】则是百度地图API的核心功能之一,包括驾车、公交、步行等多种方式。开发者可以调用`BMap.DrivingRoute`、`BMap.TransitRoute`或`BMap.WalkingRoute`类,设定起点和终点,API会自动计算出最佳的行驶路径...
- **地图服务概述**:除了地图显示的基本功能外,百度地图API还提供了多种服务,如本地搜索、路线规划等。 - **本地搜索**:根据关键词查询附近的地点信息。 - **配置搜索**:可以设置搜索的参数,如范围、排序方式...
在进行路径规划时,百度地图API提供了多种模式,包括驾车、步行和骑行,开发者可以根据用户需求选择合适的规划类型。同时,周边搜索功能支持自定义半径和类型,可以轻松查找附近的餐馆、酒店等。 此外,百度地图API...
4. **路径规划**:百度地图API提供了驾车、公交、步行等多种路径规划服务。开发者可以通过输入起点和终点,得到最佳路线建议,包括距离、预计时间和具体行驶路径。此外,还有实时路况查询,帮助用户避开拥堵。 5. *...
在本压缩包“JS高德地图模拟驾车路线规划绘制代码.zip”中,包含了一个使用HTML5技术实现的JavaScript示例,主要展示了如何利用高德地图API来规划并绘制驾车路线。这个项目对于开发者来说,是一个很好的学习和实践...
这些源码可以帮助初学者理解如何在实际项目中调用API,包括请求API、解析返回的数据、在网页上绘制地图和标注、实现路径规划等功能。通过阅读和学习这些源码,你可以了解到如何将API集成到HTML和JavaScript代码中,...
4. **路线规划**: 百度地图API提供了丰富的路线规划服务,包括驾车、步行、骑行等多种方式,可以根据起点和终点自动计算最佳路径。 5. **搜索服务**: 支持地点搜索、周边搜索等功能,帮助用户找到感兴趣的位置信息...