使用百度地图做地理追踪

js部分

//百度地图
    bMapFun : function () {
        var map = new BMap.Map("map");
        var point = new BMap.Point(116.319764, 40.070091),
            reportP = new BMap.Point(116.311481, 40.072409),
            n = 1, polyline, recentP = false,
            dataPoints = [
                    reportP,//坐标1
                  new BMap.Point(116.313098, 40.072603),//坐标2
                  new BMap.Point(116.315074, 40.069511),//坐标3
                  new BMap.Point(116.317949, 40.06998),//坐标4 以此类推
                  new BMap.Point(116.325854, 40.073017),//坐标4 以此类推
                  new BMap.Point(116.311481, 40.072409)
            ];

        map.centerAndZoom(point, 16);
        map.addControl(new BMap.NavigationControl());
        map.addControl(new BMap.ScaleControl());
        map.addControl(new BMap.OverviewMapControl());
        // var marker = new BMap.Marker(point);  // 创建标注
        // map.addOverlay(marker);               // 将标注添加到地图中

        setInterval(drawPolyLine, 1000)

        function drawPolyLine()  {
            if (!!polyline)  {
                map.removeOverlay(polyline)
            }
            if (recentP)  {
                map.removeOverlay(recentP)
            }

            n = n % dataPoints.length
            console.info(n)
            if (n > 1) {
                var points = []
                for (var i = 0;i < n; i ++ ) {
                    points.push(dataPoints[i])
                }

                polyline = new BMap.Polyline(points, {strokeColor:"#f00", strokeWeight:2, strokeOpacity:0.5});
                map.addOverlay(polyline);

                recentP = addPoint({
                    point: points[n-1],
                    title: ‘现在所在位置‘,
                    dateTime: ‘2014年1月12日 14:‘+n+ ‘5‘,
                    before: ‘30秒前‘
                })

                n++
            } else {
                n = 2
            }
        }
        // var polyline = new BMap.Polyline([
        //   reportP,//坐标1
        //   new BMap.Point(116.313098, 40.072603),//坐标2
        //   new BMap.Point(116.315074, 40.069511),//坐标3
        //   new BMap.Point(116.317949, 40.06998),//坐标4 以此类推
        //   new BMap.Point(116.325854, 40.073017),//坐标4 以此类推
        //   recentP,//坐标4 以此类推
        // ], {strokeColor:"#f00", strokeWeight:2, strokeOpacity:0.5});
        // map.addOverlay(polyline);

        // // map.addEventListener(‘click‘, function(e) {
        // //     console.info(e.point)
        // // })

        addPoint({
            point: reportP,
            title: ‘报警地点‘,
            dateTime: ‘2014年1月12日 14:15‘,
            before: ‘10分钟前‘,
            animation: true
        })
        // addPoint({
        //     point: recentP,
        //     title: ‘现在所在位置‘,
        //     dateTime: ‘2014年1月12日 14:45‘,
        //     before: ‘30秒前‘
        // })

        function addPoint(data)  {

            var point = data.point
            //解析地址
            var gc = new BMap.Geocoder();
            var marker = new BMap.Marker(point);  // 创建标注
            map.addOverlay(marker);               // 将标注添加到地图中

            if (!!data.animation)  {
                marker.setAnimation(BMAP_ANIMATION_BOUNCE)
            }

            //解析地址
            gc.getLocation(point, function(rs)
            {
                var addComp = rs.addressComponents;

                var address = [];

                //直辖市不显示省,因为省和市是一样的
                if (addComp.province != addComp.city)
                {
                    addComp.province ? address.push(addComp.province) : "";
                }

                addComp.city ? address.push(addComp.city) : "";
                addComp.district ? address.push(addComp.district) : "";
                addComp.street ? address.push(addComp.street) : "";
                addComp.streetNumber ? address.push(addComp.streetNumber) : "";

                address = address.join(",");

                var title = "坐标:" + point.lng + ", " + point.lat;

                var content = [];

                content.push("<p style=‘margin:0;‘>" + title + "</p>");
                content.push("<p style=‘margin:0;‘>地点:" + address + "</p>");
                // content.push("<p style=‘margin:0;‘>开始时间:" + start_time + "</p>");
                // content.push("<p style=‘margin:0;‘>最后时间:" + end_time + "</p>");
                content.push("<p style=‘margin:0;‘>时间:" + data.dateTime + ‘(‘ + data.before + ‘)‘ + "</p>");

                content = content.join(" ");

                //添加标注信息
                var opts = {width: 250, enableMessage: false,title:‘<p class="map-info">‘ + data.title + ‘</p>‘};

                var info_window = new BMap.InfoWindow(content, opts);

                marker.infoWindow = info_window;
                marker.openInfoWindow(info_window)

                marker.addEventListener("click", function()
                {
                    this.openInfoWindow(info_window);
                });
            });

            return marker;
        }
    }

css部分

.map {height: 580px;}
.map-info {
    color: red;
    margin-top: -5px;
    margin-bottom: 7px;
    font-weight: bold;
    font-size: 1.2em;
}
时间: 2024-10-19 14:11:59

使用百度地图做地理追踪的相关文章

HTML5 调用百度地图API地理定位

<!DOCTYPE html> <html> <title>HTML5 HTML5 调用百度地图API地理定位实例</title> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <script type="text/javascript" src="ht

百度地图反地理

1.地理编码指的是将地址位置(中文地址)转换成经纬度,反地址编码指的是将经纬度转换成地址位置: 2.在百度地图中需要用到三个关键性的类:BMKGeoCodeSearch.BMKGeoCodeSearchOption.BMKReverseGeoCodeOption: 3.BMKGeoCodeSearch:地理编码主类,用来查询.返回结果信息(地址位置或经纬度): 4.BMKGeoCodeSearchOption:地理编码选项,即地理编码的数据模型,地址是通过该类传递进去的: 5.BMKRevers

ios百度地图逆地理编码(基于2.3.0--2.4.0SDK开发)

不得不说,现在的百度LBS部门是不是没人了啊,时不时的搞出来一些不好用得东西 要做百度的逆地理编码功能,肯定是要先启动百度服务了,这些就不再扯了.  BMKGeoCodeSearch *_geoCodeSearch = [[BMKGeoCodeSearch alloc]init];  _geoCodeSearch.delegate = self; BMKReverseGeoCodeOption *reverseGeoCodeOption= [[BMKReverseGeoCodeOption al

用百度地图做了一个输入地址查询经纬度的小例子

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="jquery.js"></script> </head> <body> <input type="text"

百度地图LBS应用开发代码

最近因为工作需要,领导要我将51地图API开发的一个应用迁移到百度地图,或者说用百度地图API进行重写,实现同样的功能.我先是把现有的这个51地图的应用了解了一下,然后就试着用百度地图做一些demo,最后就自己动手参照原来的应用的功能,用百度地图实现了一下.下面就给大家介绍一下,百度地图API开发的一些基础技术. 首先,百度地图API的官方首页是:http://dev.baidu.com/wiki/static/index.htm,上面介绍了很多详细的信息,各种版本的API,成功案例,还有在线帮

百度地图JavascriptApi Marker平滑移动及车头指向行径方向

相信只要是使用百度地图做实时定位服务的朋友都会遇到这个问题,在对坐标位置进行覆盖物展示的时候,会出现由于获取坐标数据时间或者两个坐标点相距过远,导致在视觉上看Marker移动就像"僵尸跳"一样,一蹦一蹦的给客户看分分钟鄙视你到不能自已.另外如果用的是有指向性图标ICON的时候,更会引来吐槽~诶诶诶,你这小车车怎么在这个立交桥转弯的时候车头向着后面呢?怎么搞得嘛你!会不会弄啊你! 所以今天参照百度大大提供的路书开源文件实现下自己的需求,记录一下以便提供参考. 一.覆盖物在获取坐标数据的同

百度地图基础开发

因为项目的需要,最近接触了一下百度地图Android开发,遇到很多问题,相信很多博友也遇到到过这些问题,现在把我的实践经验给大家分享一下. 开发百度地图,第一步:你需要首先登录百度地图开放平台,注册一个开发者身份,通过这个身份你可以查看到百度最新的开发文档,为我们的开发提供便利.有了开发者身份后,你就可以开始为开发百度地图做准备了. 打开Android开发工具,新建一个开发项目.然后利用你在百度注册的开发者身份申请密钥,申请密钥的方法百度文档说的很清楚,给了两钟申请方法,建议使用后一种.有了密钥

IOS开发之百度地图API应用

目前我们在做IOS开发中绝大多数用的是GoogleMap地图,IOS本身自带的也是googleMap,但是如果我们希望在地图上实时显示路况信息等部分功能,googlemap则没有,所以有时候我们可以应用百度地图做应用程序.下面我简单介绍一下BMapKit的应用: 一:首先我们有一点与用googlemap开发的不同,需要创建BMKMapManager管理应用程序的map,如果没有这个类,地图则不能够显示. 下面红色的字体是自己在百度官方申请的地图api——key: BMKMapManager  *

百度地图开发(二)之添加覆盖物 + 地理编码和反地理编码

之前写过一篇关于百度地图开发的blog,主要介绍了百度地图的基本地图的显示. 详见:Android百度地图开发(一)之初体验 下面来看一下地图上覆盖物的添加,以及地理编码和反地理编码. 添加覆盖物 在地图上添加覆盖物,一般需要以下几个步骤: 1. 定义坐标点,有可能是一个,有可能是多个(比如:多边形覆盖物). 2. 构造OverlayOptions(地图覆盖物选型基类). 3. 在地图上添加覆盖物. 4. 添加相应的监听事件. 在API中可以看到,BaiDuMap类中有一个方法: 这个方法就是用