`
380071587
  • 浏览: 487068 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

百度地图 驾车/公交查询Demo(支持多起点多终点)

 
阅读更多

效果图:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>百度地图-驾车/公交查询</title>
    <link href="style/style.css" rel="stylesheet" type="text/css" />
    <script src="script/jquery.min.js" type="text/javascript"></script>
    <!-- http://api.map.baidu.com/api?v=2.0&ak=您的密钥" -->
    <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=0B3c1575c78bfb0d1c52a0660cae3491"></script>
</head>
<body>
    <div class="maincontain" id="test">
        <div class="eMapsInfo">
            <!--搜索控制-->
            <div class="eMapsTop">
                <span>线路查询</span> 从
                <input class="txt" type="text" value="东方明珠" id="fromPlace" />
                到<select id="endInput">
                    <option value="虹桥T1" selected="selected">虹桥T1</option>
                    <option value="虹桥T2">虹桥T2</option>
                    <option value="浦东机场">浦东机场</option>
                </select>
                驾车<input type="radio" name="rdo" checked="checked" value="0">公交<input name="rdo"
                    value="1" type="radio">
                <input type="button" value="查询" id="btnSearch" />
            </div>
            <!--地图-->
            <div class="eMaps">
                <div class="boxmap" id="container">
                </div>
            </div>
            <!--右侧选项-->
            <div class="boxpanel" id="box">
                <h5>
                    起点选择<a href="javascript:void(0)" id="btnExpand">(展开)</a></h5>
                <div id="startPanel">
                </div>
                <div id="drivingPanel">
                </div>
            </div>
            <div class="clear">
            </div>
        </div>
    </div>
    <script type="text/javascript">

        var setindex = 0;
        var map = new BMap.Map("container");            // 创建Map实例
        var point = new BMap.Point(121.357522, 31.193063);    // 创建点坐标 
        var marker = new BMap.Marker(point);  // 创建标注
        map.addOverlay(marker);              // 将标注添加到地图中
        map.centerAndZoom(point, 12);         // 初始化地图,设置中心点坐标和地图级别。
        map.addControl(new BMap.MapTypeControl({ anchor: BMAP_ANCHOR_TOP_RIGHT, offset: new BMap.Size(10, 10) }));
        map.addControl(new BMap.NavigationControl());               // 添加平移缩放控件
        map.addControl(new BMap.ScaleControl());                    // 添加比例尺控件
        map.addControl(new BMap.OverviewMapControl());              //添加缩略地图控件
        map.addControl(new BMap.OverviewMapControl({ anchor: BMAP_ANCHOR_BOTTOM_RIGHT, isOpen: 1 }));
        var sContent =
"<h4 style='margin:0 0 5px 0;padding:0.2em 0'>上海机场(集团)有限公司  </h4>" +
"<p style='margin:0;line-height:1.5;font-size:13px;'>地址:中国上海虹桥国际机场迎宾二路200号<br/>电话:86 21 6269 2200</p>" +
"</div>";
        var infoWindow = new BMap.InfoWindow(sContent);  // 创建信息窗口对象
        map.openInfoWindow(infoWindow, map.getCenter());      // 打开信息窗口
        function getInfoW(obj) {
            var startInfowin = new BMap.InfoWindow("</br>" + obj.title + "</br>" + obj.address + "<p class='t-c'><input value='选为起点' type='button'    onclick='startDeter();' /></p>");
            return startInfowin;
        }
        function getInfoW_M(obj) {
            startPoint = obj.point;
            map.openInfoWindow(getInfoW(obj), obj.point);
        }

        var startResults = null;
        var startPoint;
        var driving = new BMap.DrivingRoute(map, { renderOptions: { map: map, autoViewport: true, panel: 'drivingPanel'} });
        var driving_trans = new BMap.TransitRoute(map, { renderOptions: { map: map, autoViewport: true, panel: 'drivingPanel'} });
        var startOption = {
            onSearchComplete: function (results) {
                // 判断状态是否正确
                if (startSearch.getStatus() == BMAP_STATUS_SUCCESS) {
                    startResults = results;
                    var s = [];
                    map.clearOverlays();
                    for (var i = 0; i < results.getCurrentNumPois(); i++) {
                        s.push("<div><p><a onmouseover='getInfoW_M(startResults.getPoi(" + i + "))' href='#'>");
                        s.push(results.getPoi(i).title);
                        s.push("</a></p><p>");
                        s.push(results.getPoi(i).address);
                        s.push("</p></div>");
                        var marker_c = new BMap.Marker(results.getPoi(i).point);
                        (function () {
                            var cur = i;
                            var mak = marker_c;
                            mak.addEventListener("click", function () {
                                startPoint = results.getPoi(cur).point;
                                this.openInfoWindow(getInfoW(results.getPoi(cur)));      // 打开信息窗口
                            });
                        })();

                        map.addOverlay(marker_c);              // 将标注添加到地图中
                    }
                    document.getElementById("startPanel").innerHTML = s.join("");
                } else { startResults = null; alert("没有搜索到路线,请确定起点是否有效!"); }
            }
        };

        //取得交通方式
        function getType() {
            var value = "";
            var radio = document.getElementsByName("rdo");
            for (var i = 0; i < radio.length; i++) {
                if (radio[i].checked == true) {
                    value = radio[i].value;
                    break;
                }
            }
            return value;
        }
        function startDeter() {
            map.clearOverlays();
            var marker = new BMap.Marker(startPoint);
            map.addOverlay(marker);
            map.addOverlay(new BMap.Marker(point));
            if (setindex == 0) {
                driving.search(startPoint, point);
            } else {
                driving_trans.search(startPoint, point);
            }
            document.getElementById("startPanel").style.display = "none";
        }

        //创建2个搜索实例
        var startSearch = new BMap.LocalSearch(map, startOption);
        
        //搜索按钮
        $("#btnSearch").click(function () {
            setindex = getType();
            var fromPlace = document.getElementById("fromPlace").value;
            startSearch.search(fromPlace);
            var toPlace = $("#endInput").val();
            switch (setindex) {
                case "0":
                    driving.search(fromPlace, toPlace);
                    break;
                case "1":
                    driving_trans.search(fromPlace, toPlace);
                    break;
            }

            document.getElementById("box").style.display = "block";
            document.getElementById("startPanel").style.display = "block";
        });

        //控制收起/展开
        $("#btnExpand").click(function () {
            $(this).text($(this).text() == "(收起)" ? "(展开)" : "(收起)");
            if ($(this).text() == "(收起)") {
                $("#startPanel").show();
            } else {
                $("#startPanel").hide();
            }

        });
    </script>
</body>
</html>
css:

body
{
    font-size: 12px;
}
#startPanel p, #endPanel p
{
    margin: 0;
    padding: 0;
    line-height: 1.2em;
}
#startPanel div, #endPanel div
{
    padding: 5px;
}
#startPanel, #endPanel
{
    border: 1px solid #FA8722;
    font-size: 12px;
}
 h5 {
line-height: 3em;
padding: 0;
margin: 0;
}
.boxpanel
{
    width: 167px;
    float: right;
    border: 1px solid gray;
    padding: 0 2px 10px;
    height: 502px;
    overflow-y: auto;
}
#container
{
    width: 100%;
    height: 100%;
    overflow: hidden;
    margin: 0;
}
.eMapsInfo
{
    width: 737px;
    margin: 0 auto;
    padding: 20px 0;
    position: relative;
}
.eMaps
{
    border: 6px solid #d2e0ee;
    background: #fff;
    height: 502px;
    width: 552px;
    float: left;
}
.eMapsTop
{
    height: 30px;
    padding-top: 20px;
    color: #333333;
    font-size: 14px;
}
.boxpanel
{
    width: 167px;
    float: right;
    border: 1px solid gray;
    padding: 0 2px 10px;
    height: 502px;
    overflow-y: auto;
}
jquery用的1.4.2

打包下载:http://download.csdn.net/detail/a497785609/6878687


分享到:
评论

相关推荐

    百度地图驾车/公交查询Demo支持多起点多终点

    【百度地图驾车/公交查询Demo支持多起点多终点】是一个基于百度地图API开发的应用示例,主要用于演示如何在实际项目中实现复杂的路线规划功能。这个Demo涵盖了多种出行方式,包括驾车和公交,同时允许用户设置多个...

    基于百度地图demo修改了一下公交路线的显示

    在公交查询方面,百度地图API提供了公交路径规划接口,它可以根据起点和终点计算出最优的公交换乘方案。这个接口返回的数据通常包括多个路径选项,每个选项包含具体的线路、站点、换乘信息等。开发者可能通过解析...

    百度地图JS api Demo

    **百度地图JS API Demo详解** 在现代Web应用中,地图服务已经成为不可或缺的一部分,尤其是在交通、旅游、房地产等领域。百度地图JavaScript API(Application Programming Interface)提供了一套完整的接口,允许...

    Android百度地图API v2.0开发Demo

    4. 路线规划:提供驾车、公交、步行等多种路线查询功能,支持起点和终点的动态设置。 5. 点聚合:处理大量数据点时,自动进行聚合显示,提高地图性能。 6. 搜索功能:集成地点搜索、周边搜索等,方便用户查找目标...

    百度地图demo

    开发者可以设定起点和终点,SDK会自动计算出最佳路线,并在地图上清晰地展示出来。 4. **地理编码与逆地理编码**:地理编码是将地址转换为经纬度坐标的过程,而逆地理编码则是将经纬度坐标转换为地址文字描述。这两...

    百度地图使用Demo--全

    4. **路径规划**:根据起点和终点计算最佳行驶路线,可支持驾车、步行、骑行等多种交通方式,并能显示实时路况。 5. **定位**:获取用户当前的位置信息,可以是GPS定位,也可以是网络定位,为用户提供基于位置的...

    基于最新百度地图SDK开发的Demo

    这个Demo旨在帮助开发者理解和学习如何利用百度地图API进行地图应用的开发,涵盖了多个关键功能点,包括基础地图展示、定位服务、距离测量以及公交路线查询。以下是对这些功能的详细说明: 1. **基本地图**:基本...

    android 百度地图demo

    Demo中展示了如何设定起点和终点,获取并绘制路径,以及展示实时路况。 4. **LBS云服务**:LBS(Location-Based Services)云服务提供了存储和查询地理信息的能力,例如保存用户位置记录,或者进行范围查询。在Demo...

    百度地图 demo

    百度地图API是百度公司为开发者提供的地图服务接口,它支持多种语言,包括Java,使得安卓开发者可以方便地在应用中集成地图功能。主要包含以下核心模块: 1. 地图展示:展示静态或动态地图,可调整缩放级别、视角等...

    百度地图iOS版SDK2.3.0 ,包含完整Demo

    3. 路线规划:包括驾车、公交、步行等多种出行方式的路线规划,可以根据起点和终点自动计算最佳路径,同时支持多途经点规划。 4. 地理编码与反编码:可以将地址转换为经纬度坐标,反之亦然,为地图上的位置标记和...

    百度地图Demo

    4. **路径规划**:实现起点到终点的驾车、公交、步行等多种交通方式的路线规划,并显示路径详情。 5. **事件监听**:监听地图上的点击、拖动等用户交互事件,实现响应式的地图应用。 6. **地图控件**:添加缩放...

    百度api实例demo

    再者,路线规划SDK是百度地图API的一大亮点,它支持公交、驾车、步行等多种出行方式的路径规划。DEMO中会展示如何设置起点和终点,请求导航路线,以及在地图上展示规划的路线。同时,还可能包含躲避拥堵、最少换乘等...

    百度地图集成demo api3.7 (含定位与路径规划)

    在本文中,我们将深入探讨如何将百度地图API 3.7集成到你的应用程序中,重点关注定位功能和路径规划。百度地图API是开发人员用于在Web和移动应用中嵌入地图、实现定位、导航等功能的强大工具。API 3.7版本提供了丰富...

    Android百度地图个人开发demo 源码程序,包括地图图层展示,覆盖物添加,地理编码+反地理编码.zip

    百度地图API提供了计算两点间最佳路径的服务,包括公交、驾车和步行等多种方式。开发者需要理解如何设置起点和终点,选择交通模式,以及如何展示路线和步骤。 在"BDMap"这个文件中,你将找到实现以上所有功能的源...

    百度导航Demo

    可以通过RoutePlanSearch类来实现起点到终点的驾车、步行或公交路线规划。例如,调用`searchDriveRoute`方法进行驾车路线查询: ```java RoutePlanSearch.OnGetRoutePlanResultListener listener = new ...

    高德地图Demo

    1. **驾车路线规划**:根据起点和终点,计算最佳驾车路线,包括时间最短、距离最短等多种模式。 2. **步行路线规划**:为用户提供步行导航,考虑人行道和步行友好路径。 3. **公交路线规划**:查找公交线路,给出...

Global site tag (gtag.js) - Google Analytics