您的当前位置:首页正文

百度地图 路线规划之驾车导航

2024-11-06 来源:个人技术集锦
<div class="store_list">
    <ul>
        <volist name="zone_list" id="row">
            <li data-lng="{$row.lng}" data-lat="{$row.lat}">
                <a class="deg360-link border-b" <if condition="$row.panoramic_link neq ''">href="{:U('zone/panorama', ['zone_id' => $row['id']])}"<else/>href="javascript:;"</if>>
                    <img class="img-store l" src="{$row.img}" alt="" οnerrοr="this.src='__PUBLIC__/images/common/no_img.png';this.οnerrοr=null" />
                    <div class="store-main pr">
                        <p class="store-main-name">{$row.name}</p>
                        <p class="distance">0KM</p>
                    </div>
                    <p class="c"></p>
                </a>
                <p class="store-list-b pr clear">
                    <a class="store-map arrow2" href="#">{$row.address}</a>
                </p>
            </li>
        </volist>
    </ul>
</div>

<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak={:C('BAIDU_MAP_AK')}"></script>
<script type="text/javascript" src="http://api.map.baidu.com/library/SearchInfoWindow/1.5/src/SearchInfoWindow_min.js"></script>
<script type="text/javascript">
    $(function () {
        var internet = 'http://api.map.baidu.com/direction?origin=latlng:' ; //pc
        var ua = navigator.userAgent.toLowerCase();
        var is_app = 0;
        //平台、设备和操作系统
        var system ={
            win : false,
            mac : false,
            xll : false
        };

        //检测平台
        var p = navigator.platform;
        system.win = p.indexOf("Win") == 0;
        system.mac = p.indexOf("Mac") == 0;
        system.x11 = (p == "X11") || (p.indexOf("Linux") == 0);

        if(system.win || system.mac || system.xll || ua.match(/MicroMessenger/i) == "micromessenger"){
            internet = 'http://api.map.baidu.com/direction?origin=latlng:';
        }else{
            if (/iphone|ipad|ipod/.test(ua)) {
                //alert("ios");
                internet = 'baidumap://map/direction?origin=' ; //IOS
                is_app = 1;
            } else if (/android/.test(ua)) {
                //alert("android");
                internet = 'intent://map/direction?origin=' ;  //android
                is_app = 1;
            }
        }

        //浏览器定位
        var geolocation = new BMap.Geolocation();
        geolocation.getCurrentPosition(function(r){
            if(this.getStatus() == BMAP_STATUS_SUCCESS){
                var my = new BMap.Point(r.point.lng,r.point.lat);
                if (is_app) {
                    $('.store-map').each(function () {
                        var $this = $(this) ;
                        var endLat = $(this).parents('li').attr('data-lat');
                        var endLng = $(this).parents('li').attr('data-lng');
                        var navHref = internet+r.point.lat+","+r.point.lng+"&destination="+endLat+","+ endLng+"&mode=driving&region=北京&src=yourCompanyName|yourAppName";
                        $this.attr('href',navHref);
                    });
                } else {
                    $('.store-map').each(function () {
                        var $this = $(this) ;
                        var endLat = $(this).parents('li').attr('data-lat');
                        var endLng = $(this).parents('li').attr('data-lng');
                        var navHref = internet + r.point.lat + "," + r.point.lng + "|name:我的位置&destination=" + endLat + "," + endLng + "&mode=driving&region={$city_name}&output=html&src=yourCompanyName|yourAppName";
                        $this.attr('href',navHref);
                    })
                }

                function drivingRoute(start, end, callback) {
                    var transit = new BMap.DrivingRoute('武汉市', {
                        onSearchComplete: function (results) {
                            if (transit.getStatus() != BMAP_STATUS_SUCCESS){
                                return ;
                            }
                            callback(results.getPlan(0))
                        }
                    });
                    transit.search(start, end);
                }
                //
                $('.store_list li .distance').each(function(index, dom) {
                    var $this = $(dom);
                    var lng = $(this).parents('li').attr('data-lng');
                    var lat = $(this).parents('li').attr('data-lat');
                    (function($distance){
                        var point2 = new BMap.Point( lng , lat );
                        var route = drivingRoute(my, point2, function(plan) {
                            $distance.html('距离您' + plan.getDistance(true))
                        });
                    })($this)
                })
            }
            else {
                alert('failed'+this.getStatus());
            }
        },{enableHighAccuracy: true});

    });
</script>
点击到这去,调用导航
<div class="content pr">
    <div id="allmap"></div>
    <div class="foot-lab">
        <p class="foot-lab-t icon-navi">武汉市融创智谷</p>
        <div class="calculation c">
            <p class="foot-lab-l l">距离您<span id="distance"></span>,预计<span id="countdown"></span></p>
            <a class="map-nav r" id="map_nav" href="">导航</a>
        </div>
    </div>
    <input type="hidden" id="store_local" data-lng="<?php echo $lng; ?>" data-lat="<?php echo $lat; ?>"/>
</div>
<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=<?php echo Yii::app()->params['BAIDU_MAP_AK']; ?>"></script>
<script type="text/javascript" src="http://api.map.baidu.com/library/SearchInfoWindow/1.5/src/SearchInfoWindow_min.js"></script>
<script>
    $(function () {
        var scHeight = document.documentElement.clientHeight ;
        $('#allmap,.content').height(scHeight-45);
    })
    // 百度地图API功能
    var map = new BMap.Map("allmap");
    var point = new BMap.Point('<?php echo $lng; ?>', '<?php echo $lat; ?>');//目的地1
    map.centerAndZoom(point, 15);
    var marker = new BMap.Marker(point);  // 创建标注
    map.addOverlay(marker);

    //浏览器定位
    var geolocation = new BMap.Geolocation();
    geolocation.getCurrentPosition(function(r){
        if(this.getStatus() == BMAP_STATUS_SUCCESS){
            //alert('您的位置:'+r.point.lng+','+r.point.lat);
            var my = new BMap.Point(r.point.lng,r.point.lat);
            var navHref = "http://api.map.baidu.com/direction?origin=latlng:" + r.point.lat + "," + r.point.lng + "|name:我的位置&destination=<?php echo $lat; ?>,<?php echo $lng; ?>&mode=driving&region=武汉&output=html&src=yourCompanyName|yourAppName";
            $('#map_nav').attr('href',navHref);
            //获取距离时间
            var searchComplete = function (results){
                if (transit.getStatus() != BMAP_STATUS_SUCCESS){
                    return ;
                }
                var plan = results.getPlan(0); //获取第一条方案
                var time = plan.getDuration(true) + "\n"; //获取时间
                var distance = plan.getDistance(true) + "\n"; //获取距离
                $('#distance').html(distance);
                $('#countdown').html(time);
            }
            var transit = new BMap.DrivingRoute(map, {renderOptions: {map: map},
                onSearchComplete: searchComplete
            });
            transit.search(my, point);
            map.removeOverlay(marker);

            //setInterval(line,5000)

            //打开路况
            var traffic = new BMap.TrafficLayer();
            map.addTileLayer(traffic);
        }
        else {
            alert('failed'+this.getStatus());
        }
    },{enableHighAccuracy: true});
</script>
 
显示全文