精华内容
下载资源
问答
  • 百度地图轨迹demo

    2018-03-15 18:47:28
    百度地图轨迹demo,获取设备的多个经纬度,连成一点,形成轨迹
  • 利用Arcgis的API实现地图目标轨迹平滑移动。多目标示例:实现多个目标同时在地图上沿轨迹坐标点平滑移动,支持设置移动速度。单个目标示例有暂停、继续等功能代码。代码示例仅供参考。
  • 点击播放按钮可以进行轨迹回放,下方有ProgressBar同步显示进度。...下载后去AndroidMainfest里面把value改成自己在百度地图开发者平台申请的key,不过不改也不会影响绘制,只是地图显示的是方格。
  • 百度地图轨迹-路书

    2018-08-08 17:27:15
    百度地图轨迹-路书 百度地图轨迹-路书 百度地图轨迹-路书
  • 高德地图轨迹回放

    热门讨论 2014-12-17 10:18:51
    地图轨迹回放包含下面功能 1.轨迹回放播放 2.轨迹回放暂停 3.轨迹回放速度增大 4.轨迹回放速度减小 5.轨迹回放中文地址显示 6.支持进度条控制轨迹回放 注:使用时替换相应地图key即可,提供Json模拟数据,保证运行
  • 百度地图 轨迹绘制

    千次下载 热门讨论 2014-12-16 14:25:25
    百度地图 轨迹绘制 路线规划,优化了上个版本中的一些问题
  • 对高德地图轨迹平滑移动的官方demo做了一点改进,易于大家理解。
  • echarts与百度地图轨迹整合示例 技术交流群:1018373095 主要功能点 1.单个轨迹按照下方时间轴的顺序,依次播放显示 2.可以拖动下方时间轴进行拖动播放 3.多目标的同时运行显示,进行多目标的伴随效果,比如说,一个...
  • 地图轨迹回放包含下面功能 1.轨迹回放播放 2.轨迹回放暂停 3.轨迹回放速度增大 4.轨迹回放速度减小 5.轨迹回放中文地址显示 6.支持进度条控制轨迹回放 7.支持对GPS原始数据的纠错处理 注:使用时替换相应地图key即可...
  • ios系统地图轨迹+回放oc+swift。学习简书的内容。https://www.jianshu.com/p/f6111331c826?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation
  • 系统地图轨迹+回放。https://www.jianshu.com/p/f6111331c826?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation
  • 使用百度地图api实现,通过标注类控制小汽车的轨迹移动,勿喷感谢.
  • Android实现高德地图轨迹回放

    千次阅读 多人点赞 2020-10-30 14:13:53
    Android实现高德地图轨迹回放写在前面准备官方文档解读创建应用:地图api引入:权限添加效果展示过程实现写在结尾 写在前面 本篇文章是对近期工作项目中集成高德地图轨迹回放和单/多点标记功能的一个总结。 欢迎...

    写在前面

    本篇文章是对近期工作项目中集成高德地图轨迹回放和单/多点标记功能的一个总结。方便以后使用时翻阅,也方便大家,避免跟我踩一样的坑

    欢迎指正,不喜勿喷,请你善良,谢谢!!!

    准备

    官方文档解读

    	首先去[官网](https://lbs.amap.com/api/android-sdk/summary)查看开发指南进行项目中需要的内容准备。
    

    创建应用:

    左上角头像位置指针划过出现如图所示内容左上角头像位置指针划过图
    后点击应用管理->我的应用,如下图
    应用管理
    上图中创建新应用后进入如下界面
    新建应用
    上图两个步骤完成后点击新建,新建后就会在我的应用中显示你自己创建的这个应用,我用的是test作为演示。新建完成后如下图
    新建完成
    点击添加展示图如下:
    添加
    将上图中内容编辑完成后提交,就会在应用列表中将key展示出来,这里我就不做展示了。
    以上的内容就是官方文档中获取key的内容。相对来说还是比较简单的。

    地图api引入:

     //定位
        implementation 'com.amap.api:location:5.1.0'
        //搜索
        implementation 'com.amap.api:search:7.3.0'
        //导航
        implementation 'com.amap.api:navi-3dmap:7.6.0_3dmap7.6.0'
        
    

    权限添加

     <!--允许程序打开网络套接字-->
        <uses-permission android:name="android.permission.INTERNET" />
        <!--允许程序设置内置sd卡的写权限-->
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
        <!--允许程序获取网络状态-->
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
        <!--允许程序访问WiFi网络信息-->
        <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
        <!--允许程序读写手机状态和身份-->
        <uses-permission android:name="android.permission.READ_PHONE_STATE" />
        <!--用于进行网络定位-->
        <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
        <!--用于访问GPS定位-->
        <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
        <!--用于获取wifi的获取权限,wifi信息会用来进行网络定位-->
        <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
        <!--用于读取手机当前的状态-->
        <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
        <!--用于申请调用A-GPS模块-->
        <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"/>
        <!--获取运营商信息,用于支持提供运营商信息相关的接口-->
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
        <!--用于访问wifi网络信息,wifi信息会用于进行网络定位-->
        <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
        <!--这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位-->
        <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
        <!--用于访问网络,网络定位需要上网-->
        <uses-permission android:name="android.permission.INTERNET" />
        <!--用于读取手机当前的状态-->
        <uses-permission android:name="android.permission.READ_PHONE_STATE" />
        <!--写入扩展存储,向扩展卡写入数据,用于写入缓存定位数据-->
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    

    并且要在AndroidManifest.xml的application中添加如下代码:

    <meta-data
                android:name="com.amap.api.v2.apikey"
                android:value="创建应用中你自己生成的key" />
            <service android:name="com.amap.api.location.APSService" />
    
    	到这里准备工作就完成了。我先上个效果图展示一下。
    

    效果展示

    功能效果图
    有一个点呼吸的效果是我今天早上才加进去的,所以展示效果上面没有体现出来呢,不过这个功能也不是本次项目的重点

    过程实现

    地图初始化

         mMapView.onCreate(savedInstanceState);
            if (aMap == null) {
                aMap = mMapView.getMap();
                myLocationStyle = new MyLocationStyle();
                myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE_NO_CENTER);
                // 设置圆形的边框颜色
                myLocationStyle.strokeColor(Color.argb(50, 30, 150, 180));
                // 设置圆形的填充颜色
                myLocationStyle.radiusFillColor(Color.argb(50, 30, 150, 180));
                // 设置圆形的边框粗细
                myLocationStyle.strokeWidth(1.0f);
                //设置显示定位按钮 并且可以点击
                UiSettings settings = aMap.getUiSettings();
                //设置了定位的监听
                aMap.setLocationSource(this);
                // 是否显示定位按钮
                settings.setMyLocationButtonEnabled(true);
                //显示定位层并且可以触发定位,默认是flase
                aMap.setMyLocationEnabled(true);
                // 定位、且将视角移动到地图中心点,定位点依照设备方向旋转,并且会跟随设备移动。
            }
    

    定位

      //初始化定位
            mlocationClient = new AMapLocationClient(getApplicationContext());
            //设置定位回调监听
            mlocationClient.setLocationListener(this);
            //初始化定位参数
            mLocationOption = new AMapLocationClientOption();
            //设置定位模式为Hight_Accuracy高精度模式,Battery_Saving为低功耗模式,Device_Sensors是仅设备模式
            mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);
            //设置是否返回地址信息(默认返回地址信息)
            mLocationOption.setNeedAddress(true);
            //设置是否只定位一次,默认为false
            mLocationOption.setOnceLocation(false);
            //设置是否强制刷新WIFI,默认为强制刷新
            mLocationOption.setWifiActiveScan(true);
            //设置是否允许模拟位置,默认为false,不允许模拟位置
            mLocationOption.setMockEnable(false);
            //设置定位间隔,单位毫秒,默认为2000ms
            mLocationOption.setInterval(2000);
            //给定位客户端对象设置定位参数
            mlocationClient.setLocationOption(mLocationOption);
            //启动定位
            mlocationClient.startLocation();
    
    /**
    * 定位回调
    * /
        @Override
        public void onLocationChanged(AMapLocation aMapLocation) {
            if (mListener != null && aMapLocation != null) {
                if (aMapLocation != null && aMapLocation.getErrorCode() == 0) {
                    //定位成功回调信息,设置相关消息
                    aMapLocation.getLocationType();//获取当前定位结果来源,如网络定位结果,详见官方定位类型表
                    aMapLocation.getLatitude();//获取纬度
                    aMapLocation.getLongitude();//获取经度
                    aMapLocation.getAccuracy();//获取精度信息
                    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                    Date date = new Date(aMapLocation.getTime());
                    df.format(date);//定位时间
                    aMapLocation.getAddress();//地址,如果option中设置isNeedAddress为false,则没有此结果,网络定位结果中会有地址信息,GPS定位不返回地址信息。
                    aMapLocation.getCountry();//国家信息
                    aMapLocation.getProvince();//省信息
                    aMapLocation.getCity();//城市信息
                    aMapLocation.getDistrict();//城区信息
                    aMapLocation.getStreet();//街道信息
                    aMapLocation.getStreetNum();//街道门牌号信息
                    aMapLocation.getCityCode();//城市编码
                    aMapLocation.getAdCode();//地区编码
    
                    // 如果不设置标志位,此时再拖动地图时,它会不断将地图移动到当前的位置
                    if (isFirstLoc) {
                        //设置缩放级别
                        aMap.moveCamera(CameraUpdateFactory.zoomTo(18));
                        //将地图移动到定位点
                        aMap.moveCamera(CameraUpdateFactory.changeLatLng(new LatLng(aMapLocation.getLatitude(), aMapLocation.getLongitude())));
                        //点击定位按钮 能够将地图的中心移动到定位点
                        mListener.onLocationChanged(aMapLocation);
                        //添加图钉
                        // aMap.addMarker(getMarkerOptions(amapLocation));
                        //获取定位信息
                        StringBuffer buffer = new StringBuffer();
                        buffer.append(aMapLocation.getCountry() + ""
                                + aMapLocation.getProvince() + ""
                                + aMapLocation.getCity() + ""
                                + aMapLocation.getProvince() + ""
                                + aMapLocation.getDistrict() + ""
                                + aMapLocation.getStreet() + ""
                                + aMapLocation.getStreetNum());
                        Toast.makeText(getApplicationContext(), buffer.toString(), Toast.LENGTH_LONG).show();
                        isFirstLoc = false;
                        // 显示系统小蓝点
                        mListener.onLocationChanged(aMapLocation);
                    }
                } else {
                    Log.e("AmapError", "location Error, ErrCode:"
                            + aMapLocation.getErrorCode() + ", errInfo:"
                            + aMapLocation.getErrorInfo());
                    Toast.makeText(getApplicationContext(), "定位失败", Toast.LENGTH_LONG).show();
                }
            }
        }
    

    显示标记点

      ArrayList<BitmapDescriptor> normalGiflist = new ArrayList<>();
            normalGiflist.add(BitmapDescriptorFactory.fromResource(R.drawable.icon_normal1));
            normalGiflist.add(BitmapDescriptorFactory.fromResource(R.drawable.icon_normal17));
            normalGiflist.add(BitmapDescriptorFactory.fromResource(R.drawable.icon_normal38));
    
            for (int i = 0; i < coords.length; i += 2) {
                Marker marker = aMap.addMarker(new MarkerOptions().position(new LatLng(coords[i + 1], coords[i])).anchor(0.5f, 0.5f).icons(normalGiflist).period(15));
                markerList.add(marker);
            }
    

    注意:这里要说一下关于点标记删除的问题,删除点要将点遍历后通过remove移除,虽然map.clear()方法也可以使用,但是如果同时有很多中marker在显示的话就不建议使用了

    我就死在了这个上面纠结了好几天,导致各种bug频现,唉,说多了全是泪啊🤦‍

    点平滑移动

     public void startMove() {
    
            if (mPolyline == null) {
                Toast.makeText(this, "请先设置路线", Toast.LENGTH_SHORT).show();
                return;
            }
            List<LatLng> points = readLatLngs();
            // 构建 轨迹的显示区域
            LatLngBounds.Builder builder = new LatLngBounds.Builder();
            builder.include(points.get(0));
            builder.include(points.get(points.size() - 2));
    
            aMap.animateCamera(CameraUpdateFactory.newLatLngBounds(builder.build(), 50));
    
            // 实例 MovingPointOverlay 对象
            if (smoothMarker == null) {
                // 设置 平滑移动的 图标
                marker = aMap.addMarker(new MarkerOptions().icon(BitmapDescriptorFactory.fromResource(R.mipmap.ic_launcher)));
                smoothMarker = new MovingPointOverlay(aMap, marker);
            }
    
            // 取轨迹点的第一个点 作为 平滑移动的启动
            LatLng drivePoint = points.get(0);
            Pair<Integer, LatLng> pair = SpatialRelationUtil.calShortestDistancePoint(points, drivePoint);
            points.set(pair.first, drivePoint);
            List<LatLng> subList = points.subList(pair.first, points.size());
    
            // 设置轨迹点
            smoothMarker.setPoints(subList);
            // 设置平滑移动的总时间  单位  秒
            smoothMarker.setTotalDuration(40);
    
            // 设置  自定义的InfoWindow 适配器
            aMap.setInfoWindowAdapter(infoWindowAdapter);
            // 显示 infowindow
            marker.showInfoWindow();
            // 设置移动的监听事件  返回 距终点的距离  单位 米
            smoothMarker.setMoveListener(new MovingPointOverlay.MoveListener() {
                @Override
                public void move(final double distance) {
    
                    try {
                        runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                if (infoWindowLayout != null && title != null) {
                                    title.setText("距离终点还有: " + (int) distance + "米");
                                }
                            }
                        });
    
                    } catch (Throwable e) {
                        e.printStackTrace();
                    }
                }
            });
    
            // 开始移动
            smoothMarker.startSmoothMove();
    
        }
    

    添加呼吸点

     noLineMaker = aMap.addMarker(new MarkerOptions().position(new LatLng(39.97693511, 116.34892166))
                    .zIndex(1).anchor(0.5f, 0.5f).icon(BitmapDescriptorFactory.fromResource(R.drawable.icon_no_line1)));
            //呼吸点中心点
            aMap.addMarker(new MarkerOptions().position(new LatLng(39.97693511, 116.34892166)).zIndex(2)
                    .anchor(0.5f, 0.5f).icon(BitmapDescriptorFactory.fromResource(R.drawable.icon_no_line1)));
    
            AnimationSet animationSet = new AnimationSet(true);
    
            AlphaAnimation alphaAnimation = new AlphaAnimation(0.5f, 0f);
            alphaAnimation.setDuration(2000);
            alphaAnimation.setRepeatCount(Animation.INFINITE);
            ScaleAnimation scaleAnimation = new ScaleAnimation(1, 3.5f, 1, 3.5f);
            scaleAnimation.setDuration(2000);
            scaleAnimation.setRepeatCount(Animation.INFINITE);
            animationSet.addAnimation(alphaAnimation);
            animationSet.addAnimation(scaleAnimation);
            animationSet.setInterpolator(new LinearInterpolator());
            noLineMaker.setAnimation(animationSet);
            noLineMaker.startAnimation();
    

    到这里所有的内容就都结束了。

    写在结尾

    这篇文章本来应该是在前天下午就应该出现的,但是由于不会弄那个gif图,导致今天才完成了这篇文章。虽然文章写晚了,但是还是有一个小功能添加的,所以也不亏的哦。按照本文章的话还是可以顺利完成这些功能的,我也是找了很多的文章之后才实现这些功能的,中间还是踩了很多坑的,现在回想一下,好像也没有什么。所以,加油,打工人!我们都是最棒的。

    本篇文章相关demo请关注微信公众号”只会写bug的咸鱼“ 后台回复”轨迹回放“获取

    创作不易,不喜勿喷,欢迎指正!

    最后的最后,我要说一句,周末愉快,打工人

    展开全文
  • 百度地图,地图轨迹

    2021-06-18 01:12:17
    百度地图,记录行动轨迹:效果图: 上代码:body,html,#allmap {width: 100%;...}单个标注点沿直线的轨迹运动// 百度地图API功能var map = new BMap.Map("allmap");map.centerAndZoom(new BMap.Po...

    百度地图,记录行动轨迹:

    效果图:

    0e7ec9786699cc904973a91030a89193.png

    上代码:

    body,

    html,

    #allmap {

    width: 100%;

    height: 100%;

    overflow: hidden;

    margin: 0;

    font-family: "微软雅黑";

    }

    单个标注点沿直线的轨迹运动

    // 百度地图API功能

    var map = new BMap.Map("allmap");

    map.centerAndZoom(new BMap.Point(116.404, 39.915), 15);

    var myP1 = new BMap.Point(116.380967, 39.913285); //起点

    var myP2 = new BMap.Point(116.424374, 39.914668); //终点

    var myIcon = new BMap.Icon("http://lbsyun.baidu.com/jsdemo/img/Mario.png", new BMap.Size(32, 70), { //小车图片

    //offset: new BMap.Size(0, -5), //相当于CSS精灵

    imageOffset: new BMap.Size(0, 0) //图片的偏移量。为了是图片底部中心对准坐标点。

    });

    var driving2 = new BMap.DrivingRoute(map, { renderOptions: { map: map, autoViewport: true } }); //驾车实例

    driving2.search(myP1, myP2); //显示一条公交线路

    window.run = function() {

    var driving = new BMap.DrivingRoute(map); //驾车实例

    driving.search(myP1, myP2);

    driving.setSearchCompleteCallback(function() {

    var pts = driving.getResults().getPlan(0).getRoute(0).getPath(); //通过驾车实例,获得一系列点的数组

    var paths = pts.length; //获得有几个点

    var carMk = new BMap.Marker(pts[0], { icon: myIcon });

    map.addOverlay(carMk);

    i = 0;

    function resetMkPoint(i) {

    carMk.setPosition(pts[i]);

    if(i < paths) {

    setTimeout(function() {

    i++;

    resetMkPoint(i);

    }, 100);

    }

    }

    setTimeout(function() {

    resetMkPoint(5);

    }, 100)

    });

    }

    setTimeout(function() {

    run();

    }, 1500);

    来源:oschina

    链接:https://my.oschina.net/u/4377109/blog/4304061

    展开全文
  • GIS地图轨迹移动代码

    2016-11-25 16:08:15
    GIS地图轨迹移动案例代码,仅供参考。JavaScript技术的。arcgis for JavaScript
  • uniapp地图轨迹回放

    千次阅读 2021-04-07 12:50:37
    uniapp地图轨迹回放 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 新的改变 ...

    uniapp地图轨迹回放

    欢迎使用ay-contrail插件

    最近有需求为:在地图上展示一些点的轨迹,按时间先后顺序回放。已实现任意多点的轨迹回放,整理插件代码如下:

    1.ay-contrail插件

    可去uniapp插件市场的地图轨迹插件页面下载.

    属性
    属性类型说明
    mapIdString地图id,默认mapId_contrail
    pointsArray轨迹数组
    longitudeNumber 经度
    latitudeNumber 纬度
    scaleNumber缩放级别,取值范围为3-20,默认14
    longitudeNumber当前位置经度
    latitudeNumber当前位置纬度
    satelliteBoolean是否开启卫星图,默认开启

    下面是插件的 代码片.

    <template>
    	<view>
    		<map :id="mapId" :longitude="longitude" :latitude="latitude" :scale="scale" :markers="markers" :polyline="polyline"
    		 :enable-satellite="satellite" show-location style="width: 100%; height: 100vh;"
    		 @markertap="tapMarker"></map>
    	</view>
    </template>
    
    <script>
    	export default {
    		components: {
    
    		},
    		props: {
    			mapId: {
    				type: String,
    				default: 'mapId_contrail'
    			},
    			points: {
    				type: Array,
    				default () {
    					return []
    				}
    			},
    			scale: {
    				type: Number,
    				default: 14
    			},
    			latitude: {
    				type: Number,
    				default: 39.806466
    			},
    			longitude: {
    				type: Number,
    				default: 98.226473
    			},
    			//是否开启卫星图
    			satellite: {
    				type: Boolean,
    				default: true
    			},
    		},
    		data() {
    			return {
    				i: 0, // 用于循环
    				markers: [], // 标记点集合
    				polyline: [], // 坐标点集合
    				mapCtx : {},
    			}
    		},
    		mounted:function(){
    			let that = this;
    			that.mapCtx = uni.createMapContext(that.mapId,this); // 创建 map 上下文 MapContext 对象
    			
    		},
    		watch: {
    			points(e) {
    				let that = this;
    				if(that.points.length>0){
    					that.setDateByPoints(that.points) ;
    				}
    				
    			},
    		},
    		created: function() {
    			let that = this;
    			if(that.points.length>0){
    				that.setDateByPoints(that.points) ;
    			}
    		},
    		methods: {
    			tapMarker(e){
    				this.$emit('markertap', e);
    			},
    			setDateByPoints(points) {
    				let that = this;
    				
    				// 标记点集合
    				
    				let markers = points;
    				
    				markers.map((value, index) => {
    					markers[index].id = index + 1;
    				});
    				
    				
    
    				that.polyline = [{
    					points: points,
    					color: "#FF0000DD",
    					width: 2
    				}];
    				that.markers = markers;
    
    
    				this.translateMarker(markers);
    			},
    			// 平移marker,带动画
    			translateMarker: function(markers) {
    				let that = this;
    				let markerId = markers[that.i].id ;
    				
    				let destination = {
    					longitude: markers[that.i + 1].longitude,
    					latitude: markers[that.i + 1].latitude
    				};
    				let getDistance = that.getDistance(markers[that.i].latitude, markers[that.i].longitude, markers[that.i + 1].latitude,
    					markers[that.i + 1].longitude);
    				let duration = getDistance * 2; // 根据距离计算平移的速度,看起来保持匀速
    				
    				this.mapCtx.translateMarker({
    					markerId: markerId,
    					destination: destination,
    					autoRotate: true,
    					rotate: 30,
    					duration: duration,
    					success(res) {
    						that.i = that.i + 1;
    						
    						// 小于长度减1才执行
    						if (that.i < markers.length - 1) {
    							that.translateMarker(markers);
    						}
    					},
    					fail(err) {
    						console.log('fail', err)
    					}
    				})
    			},
    			// 计算两坐标点之间的距离
    			getDistance: function(lat1, lng1, lat2, lng2) {
    				let rad1 = lat1 * Math.PI / 180.0;
    				let rad2 = lat2 * Math.PI / 180.0;
    				let a = rad1 - rad2;
    				let b = lng1 * Math.PI / 180.0 - lng2 * Math.PI / 180.0;
    				let r = 6378137;
    				return (r * 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(rad1) * Math.cos(rad2) * Math.pow(Math
    					.sin(b / 2), 2)))).toFixed(0)
    
    			},
    
    		},
    	}
    </script>
    
    <style>
    </style>
    
    
    

    此处需要注意,在组件中创建在mounted方法里面,并后面括号要加this
    (若在页面中创建,在onReady方法,this也不是必须的)

    2.引用插件

    可去uniapp插件市场的地图轨迹插件页面,下载项目

    项目结构如下:
    ay-contrail插件项目结构

    下面index.vue是引用插件的 代码片.

    <template>
    	<view>
    		<aycontrail  :points="points" :latitude="latitude" :longitude="longitude" scale="12" :satellite="true"></aycontrail>
    		
    	</view>
    
    
    </template>
    
    <script>
    	import aycontrail from '../components/ay-contrail/ay-contrail.vue';
    	export default {
    		components: {
    			aycontrail,
    		},
    
    
    		computed: {
    
    		},
    		data() {
    			return {
    
    				points: [],
    				latitude: 39.806466,
    				longitude: 98.226473,
    			};
    		},
    		// #ifdef MP-WEIXIN
    		//微信小程序的分享
    		onShareAppMessage: function(options) {
    		
    		},
    		// #endif
    		onReady: function() {
    			
    		},
    		onLoad: function() {
    			let that = this;
    		},
    		onShow: function() {
    			let that = this;
    			// 获取当前坐标
    			uni.getLocation({
    				type: 'wgs84',
    				success: (res) => {
    					let longitude = res.longitude ;
    					let latitude = res.latitude ;
    					// 坐标集合
    					let points = [{
    						longitude: longitude,
    						latitude: latitude
    					}, {
    						longitude: longitude - 0.02,
    						latitude: latitude + 0.02
    					}, {
    						longitude: longitude + 0.03,
    						latitude: latitude + 0.03
    					}, {
    						longitude: longitude - 0.01,
    						latitude: latitude + 0.02
    					}, {
    						longitude: longitude,
    						latitude: latitude
    					}];
    					that.latitude = res.latitude;
    					that.longitude = res.longitude;
    					that.points = points;
    					
    				},
    				fail:function(err){
    					let longitude = that.longitude ;
    					let latitude = that.latitude ;
    					// 坐标集合
    					let points = [{
    						longitude: longitude,
    						latitude: latitude
    					}, {
    						longitude: longitude - 0.02,
    						latitude: latitude + 0.02
    					}, {
    						longitude: longitude + 0.03,
    						latitude: latitude + 0.03
    					}, {
    						longitude: longitude - 0.01,
    						latitude: latitude + 0.02
    					}, {
    						longitude: longitude,
    						latitude: latitude
    					}];
    					that.points = points;
    				}
    			})
    			
    			
    
    		},
    		
    		methods: {
    			
    		},
    	}
    </script>
    
    <style lang="scss">
    
    </style>
    
    

    3.配置

    微信小程序:
    1.配置自己的微信小程序appid;
    2.微信小程序后台:设置->第三方平台授权管理->腾讯位置服务;
    3.腾讯位置服务也绑定微信小程序appid.

    微信小程序预览效果

    地图轨迹预览效果

    效果图

    地图轨迹效果图

    扫描公众号,了解更多实例分享:
    实例分享

    参考

    微信小程序实现轨迹回放的示例代码
    微信小程序实现活动轨迹回放

    展开全文
  • 百度地图轨迹回放源代码,里面有详细的备注,有”暂停“,”重置“,”播放“按钮,可以异步从数据库读取数据,也比较适合作为移动端后台
  • Introduce java-demo 是由官方提供的java sdk,方便调试使用。 java-demo 集成了实时查询、订阅推送、智能判断、云打印相关、电子面单相关、短信、商家寄件等接口。 Features 提供了快递100接口请求参数实体类、返回...
  • android 百度地图,记录轨迹,路线,坐标等(android Baidu maps, record tracks, routes, coordinates, etc.)
  • uniapp使用高德地图微信小程序SDK生成地图轨迹

    千次阅读 热门讨论 2020-12-18 17:47:37
    一文看懂微信小程序生成地图轨迹一、开发准备1、下载微信小程序SDK2、高德控制台申请相关平台key二、html页面展示地图标签三、引入sdk及定义数据四、相关方法(静态生成两个点之间的轨迹数据)五、相关方法(后端...

    一、开发准备

    1、下载微信小程序SDK

    将微信小程序SDK下载到项目中就可以了,官网下载链接在下方显示

    微信小程序SDK下载页面

    2、高德控制台申请相关平台key

    在这里插入图片描述

    控制台

    如果没有开发者账号的话,可以先去注册一个

    二、html页面展示地图标签

    <!-- latitude纬度  longitude经度  scale缩放等级  markers图标数据  polyline地图轨迹数据-->
    <view>
    	<map style="width: 750rpx; height: 100vh;" :latitude="latitude" 
    		:longitude="longitude" scale="12" :markers="markers" :polyline="polyline">
    	</map>
    </view>
    

    三、引入sdk及定义数据

    // 引入微信小程序sdk
    import amap from '@/gaodemap_sdk/amap-wx.js'
    
    // 数据定义
    // 地图实例
    amapPlugin:null,
    // 小程序高德地图key
    key:'xxxxxxxxxxxxxxx',
    // 图标点数据
    markers: [{
      iconPath: "/static/imgs/location.png",
      id: 0,
      latitude: 39.989643,
      longitude: 116.481028,
      width: 23,
      height: 33
    },{
      iconPath: "/static/imgs/location.png",
      id: 0,
      latitude:39.90816,
      longitude: 116.434446,
      width: 24,
      height: 34
    }],
    // 中心点
    latitude: 39.954125,
    longitude: 116.45664,	
    // 地图轨迹数据
    polyline:[],	
    

    四、相关方法(静态生成两个点之间的轨迹数据)

    获取到的地图轨迹数据也是一个点一个点的,这些点形成了一条轨迹

    onLoad(options) {
    	this.amapPlugin = new amap.AMapWX({
    		key:this.key
    	})
    	var that = this
    	// 静态死数据
    	this.amapPlugin.getDrivingRoute({
          origin: '116.481028,39.989643',
          destination: '116.434446,39.90816',
          success: function(data){
            var points = [];
            // 通过一个点一个点生成地图轨迹数据
            if(data.paths && data.paths[0] && data.paths[0].steps){
              var steps = data.paths[0].steps;
              for(var i = 0; i < steps.length; i++){
                var poLen = steps[i].polyline.split(';');
                for(var j = 0;j < poLen.length; j++){
                  points.push({
                    longitude: parseFloat(poLen[j].split(',')[0]),
                    latitude: parseFloat(poLen[j].split(',')[1])
                  })
                } 
              }
            }
            that.polyline: [{
                points: points,   //地图轨迹数据
                color: "#0091ff",   //轨迹颜色
                width: 6   //线条宽度
              }]
          },
          fail: function(info){
    
          }
        })
    },
    

    五、相关方法(后端返回的轨迹数据)

    onLoad(options) {
    	this.amapPlugin = new amap.AMapWX({
    		key:this.key
    	})
    	this.getTrackData()
    }
    

    获取地图轨迹数据,需要传递的数据看后台要求

    // 获取轨迹数据
    async getTrackData(){
    	const { data:res } = await this.$myHttp({
    		url:'device/locator/historicalTrack',
    		data:{
    			locator_code:'xxxxxxxxxxxxxx',  //设备id
    		}
    	})
    	if(res.code == 200){
    		// 创建一个空数组用于存放地图轨迹数据
    		let arr = []
    		res.data.map((item,index)=>{
    			arr.push({
    				longitude:item.baiduLng,
    				latitude:item.baiduLat
    			})
    		})
    		arr.map((item)=>{
    			item = this.bd_decrypt(item.longitude,item.latitude)
    		})
    		this.polyline = [{
    			points: arr,
    			color: "#0091ff",   //轨迹颜色
    			width: 6   // 轨迹线条的宽度
    		}]
    		// 改变图标坐标
    		this.markers[0].latitude = arr[0].latitude
    		this.markers[0].longitude = arr[0].longitude
    		this.markers[1].latitude = arr[arr.length-1].latitude
    		this.markers[1].longitude = arr[arr.length-1].longitude
    		// 改变中心点
    		this.latitude = arr[Math.floor(arr.length/2)].latitude
    		this.longitude = arr[Math.floor(arr.length/2)].longitudex
    	}else{
    		uni.showToast({
    			title:"获取运行轨迹失败",
    			icon:"none",
    			duration:1000
    		})
    	}
    }
    

    中间所用到的bd_decrypt方法是百度坐标转高德,因为后台的数据是百度坐标系的,如果数据是高德坐标奚的就可以不用转了。

    //百度坐标转高德(传入经度、纬度)
    bd_decrypt:function(bd_lng, bd_lat) {
        var X_PI = Math.PI * 3000.0 / 180.0;
        var x = bd_lng - 0.0065;
        var y = bd_lat - 0.006;
        var z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * X_PI);
        var theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * X_PI);
        var gg_lng = z * Math.cos(theta);
        var gg_lat = z * Math.sin(theta);
        return {longitude: gg_lng, latitude: gg_lat}
    },
    

    这样,通过微信小程序sdk生成的地图轨迹就渲染完成了,有问题的小伙伴可以评论区告诉我哦~

    展开全文
  • Vue 百度地图轨迹

    千次阅读 2020-12-20 14:14:35
    首先我们在我们的项目的根目录找到index.html 我们把百度地图的api引入进去这样全局都可以使用1、methods 里面定义一个需要使用的方法:initMap(){varmap=newBMap.Map("allmap");//创建Map实例//map....
  • 高德API 示例:https://lbs.amap.com/demo/javascript-api/example/marker/replaying-historical-running-data 效果展示 代码 <html> <head> 高德地图轨迹回放,消息框内展示车辆信息且随车辆移动title> 高德KEY&...
  • 高德地图轨迹回放功能

    千次阅读 2021-07-17 10:38:35
    下面将详细讲述如何使用高德地图轨迹回放,在使用该功能之前需要先做坐标系转换,因为设备用的中科微GPS模组输出的经纬度格式是属于WGS-84坐标系的,使用高德地图需要转换为GCJ02坐标系。 二、坐标系 WGS84坐标系...
  • 百度地图轨迹回放demo

    2015-11-24 10:58:07
    自制demo,一个arraylist内存一系列坐标信息,运用百度地图实现播放运动轨迹功能。下载后需要把AndroidManifest里面的key换为自己申请的key。
  • 1、高德地图web示例最近要做一个根据用户车牌号查询用户定位和运动轨迹的功能,第一时间想到做web端的方便便于维护,且我们ios端是用h5框架编写的,也方便ios去使用,去查了一下高德地图,欸?这不就有现成的直接用...
  • 高德地图轨迹回放 Demo 效果图 使用 示例的高德 API Key 已经去掉了,如果运行不起来请自行申请高德 API Key,填入如下区域: <meta-data android:name="com.amap.api.v2.apikey" android:value="<你的Key&...
  • 高德地图轨迹回放Demo(Android)

    热门讨论 2014-12-10 00:14:54
    高德地图上,沿着折现覆盖物移动的动画,实现了轨迹回放的功能,仅供参考。
  • 地图中将时间轴选择好的轨迹进行连线展示,不同的速度,以不同的颜色进行区分 1,时间轴的计算初始点与有轨迹的时间展示代码 // 在24小时时间内,以返回的时间段为中心显示 setTimeRuler: function (e) { this....
  • 需要在线路上做一个流动效果来表示线路的轨迹方向 可以参考;lines-bmap-effect">https://echarts.apache.org/examples/zh/editor.html?c=lines-bmap-effect这个echarts上 的效果,和这个类似 技术是用的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 23,108
精华内容 9,243
关键字:

地图轨迹

友情链接: BitmapMenu.rar