精华内容
下载资源
问答
  • Python-路径规划demo

    2019-08-10 18:01:34
    路径规划demo
  • 从百度地图中提取出定位、跟从、罗盘模式定位和路先规划,已做成独立的demo,方便大家使用
  • 这是一个利用腾讯地图实现到达指定位置的线路规划微信小程序demo,需要去腾讯地图中申请个人的key。地址:https://lbs.qq.com/dev/console/key/manage。谢谢各位大佬批评指导。
  • 今天分享腾讯位置服务地图SDK检索功能的应用,使用公交路线规划功能实现Demo,暂时还没有做同一路线不同公交线路切换功能(后续完善此Demo)。 使用场景 公交路线规划 准备 腾讯位置服务iOS地图SDK 公交路线规划检索...

    前言

    今天分享腾讯位置服务地图SDK检索功能的应用,使用公交路线规划功能实现Demo,暂时还没有做同一路线不同公交线路切换功能(后续完善此Demo)。

    使用场景

    公交路线规划

    准备

    腾讯位置服务iOS地图SDK

    公交路线规划检索结果的数据说明

    1、检索结果:QMSBusingRouteSearchResult中的NSArray *routes属性包含了检索到的结果,每个结果都是一个独立的公交出行方案QMSBusingRoutePlan。

    2、公交出行方案:QMSBusingRoutePlan,表示从起点到终点的完整出行规划

    属性 说明
    CGFloat distance 方案的总距离
    CGFloat duration 方案的预估时间
    NSString *bounds 方案的东北、西南坐标,用于调整地图视角显示路线
    NSArray <QMSBusingSegmentRoutePlan *> *steps 总路线的分段信息(包含步行、公交,其中公交可能包含多个方案)

    3、出行方案的分段路线规划

    属性 说明
    NSString *mode “WALKING”:步行
    "TRANSIT":公交
    标记该分段的出行方式
    CGFloat distance 分段的距离
    CGFloat duration 分段的预估时间
    CGFloat price 如果是公交或者地铁,需要花费的金额,元
    CNSString *direction 方向描述,如果为步行,表达为向哪个方向走
    NSArray *polyline 分段途径坐标点(这里必须说一下,腾讯地图SDK使用的是CLLocationCoordinate2D的encode类型,因此还需要decode才能使用)
    NSArray *lines 如果是公交,并且有多个线路可以乘坐的话,该数组就会包含多个路线:QMSBusingRouteTransitLine

    4、公交线路规划:QMSBusingRouteTransitLine,到这里才是最麻烦的地方,因为是一个线路的不同方案

    属性 说明
    NSString *vehicle 交通工具:公交、地铁
    NSString *id_ 应该是个标记,没发现作用
    CGFloat distance 距离
    NSTimeInterval duration 预计乘坐时间
    NSString *title 车名:如333路、软件园通勤车等
    NSArray *polyline 途径坐标点
    NSInteger station_count 途径站的数目
    NSArray<QMSBusStation *> *stations 途径站的站名
    QMSStationEntrance *destination 目的地的地址,也就是属于哪个街道
    QMSBusStation *geton 上车车站
    QMSBusStation *getoff 下车车站

    公交路线规划的详细说明

    1、公交路线规划的起点和终点坐标的检索(不支持地名检索)

    1)SDK检索参数并不支持地名检索,只有坐标检索,因此要使用检索功能就必须先通过POI检索功能来获取起点和终点的坐标位置:

    - (IBAction)searchButtonClicked:(UIButton *)sender {
        _startPoiData = nil;
        _endPoiData = nil;
        
        // 起点:腾讯北京总部
        _startPoiOption = [[QMSPoiSearchOption alloc] init];
        _startPoiOption.keyword = _startPointTextField.text;
        [_startPoiOption setBoundaryByRegionWithCityName:@"北京" autoExtend:NO];
        [self.mapSearcher searchWithPoiSearchOption:_startPoiOption];
        
        // 终点:西二旗地忒站
        _endPoiOption = [[QMSPoiSearchOption alloc] init];
        _endPoiOption.keyword = _endPointTextField.text;
        [_endPoiOption setBoundaryByRegionWithCityName:@"北京" autoExtend:NO];
        [self.mapSearcher searchWithPoiSearchOption:_endPoiOption];
    }
    
    - (void)searchWithPoiSearchOption:(QMSPoiSearchOption *)poiSearchOption didReceiveResult:(QMSPoiSearchResult *)poiSearchResult {
        if (poiSearchOption == _startPoiOption) {
            _startPoiData = poiSearchResult.dataArray.firstObject;
        } else {
            _endPoiData = poiSearchResult.dataArray.firstObject;
        }
        
        
        // 添加起点终点前,先消除之前的大头针
        [self.mapView removeAnnotations:self.mapView.annotations];
        
        // 设置起点和终点
        QPointAnnotation *startPointAnnotation = [[QPointAnnotation alloc] init];
        startPointAnnotation.coordinate = _startPoiData.location;
        [self.mapView addAnnotation:startPointAnnotation];
        
        QPointAnnotation *endPointAnnotation = [[QPointAnnotation alloc] init];
        endPointAnnotation.coordinate = _endPoiData.location;
        [self.mapView addAnnotation:endPointAnnotation];
        
        // 发起公交路线规划检索
        [self searchBusRoute];
    }
    

    2)通过起点和终点POI数据来发起公交路线规划检索

    - (void)searchBusRoute {
        if (_startPoiData != nil && _endPoiData != nil) {
            QMSBusingRouteSearchOption *option = [[QMSBusingRouteSearchOption alloc] init];
            [option setFromCoordinate:_startPoiData.location];
            [option setToCoordinate:_endPoiData.location];
            
            [self.mapSearcher searchWithBusingRouteSearchOption:option];
        }
    }
    

    2、显示所有路线的基本信息

    1)、获取方案的数量:planCount

    NSInteger planCount = busingRouteSearchResult.routes.count;
    

    2)、创建路线方案模型数组,在这里我在保存了路线的同事,提出了几样数据:

    // 路线方案
    @property (nonatomic, strong) QMSBusingRoutePlan *routePlan;
    // 路线预估时间
    @property (nonatomic, assign) NSInteger duration;
    // 路线的步行距离
    @property (nonatomic, assign) CGFloat distance;
    // 途径的公交车站数
    @property (nonatomic, assign) NSInteger stationCount;
    // 上车站名称
    @property (nonatomic, strong) NSString *startStationName;
    

    3)、获取路线的步行距离:需要遍历方案中的所有分段信息,判断是否为步行,然后累加distance:

    // 遍历方案中的步骤
    for (int i = 0; i < plan.steps.count; i++) {
        QMSBusingSegmentRoutePlan *segmentRoutePlan = plan.steps[i];
        
        // 判断步骤为步行,累计距离
        if ([self routeIsWalkingPlan:segmentRoutePlan]) {
            walkingDistance += segmentRoutePlan.distance;
        }
    }
    

    4)、获取途径的公交站总数和上车站名称:由于同一分段可能有多个公交出行方案,在此只演示了默认第一条方案:

    // 判断步骤为公交
    if ([self routeIsTransitPlan:segmentRoutePlan]) {
        // 遍历经过的公交
        for (int j = 0; j < segmentRoutePlan.lines.count; j++) {
            QMSBusingRouteTransitLine *line = segmentRoutePlan.lines[j];
            // 公交站数
            stationCount += line.station_count;
            
            // 第一站名称
            if (j == 0) {
                QMSBusStation *station = line.stations.firstObject;
                startStationName = station.title;
            }
        }
    }
    

    5)、通过TableView来展示所有的方案:

    3、选择方案,展示路线图

    1)、先获取该方案总共的分段数:

    NSInteger stepCount = routePlan.steps.count;
    

    2)、通过判断分段方案的类型,来区分虚线和蚯蚓线:

    if ([self routeIsWalkingPlan:plan]) {
        // 步行虚线
        CLLocationCoordinate2D coords[plan.polyline.count];
        for (int i = 0; i < plan.polyline.count; i++) {
            NSValue *value = plan.polyline[i];
            CLLocationCoordinate2D coord = [value coordinateValue];
            coords[i] = coord;
        }
    
        QPolyline *walkingPolyline = [[QPolyline alloc] initWithCoordinates:coords count:plan.polyline.count];
        // QPolyline中的userData属性可以用来添加自定义的内容去判断数据
        walkingPolyline.userData = @"WALKING";
        [self.mapView addOverlay:walkingPolyline];
        
    } else {
    
        // 驾车蚯蚓线
        QMSBusingRouteTransitLine *line = plan.lines[0];
        CLLocationCoordinate2D coords[line.polyline.count];
        for (int i = 0; i < line.polyline.count; i++) {
            NSValue *value = line.polyline[i];
            CLLocationCoordinate2D coord = [value coordinateValue];
            coords[i] = coord;
        }
    
        QPolyline *busPolyline = [[QPolyline alloc] initWithCoordinates:coords count:line.polyline.count];
        busPolyline.userData = @"TRANSIT";
        [self.mapView addOverlay:busPolyline];
    }
    

    3)、最后,实现代理方法去绘制线路:

    - (QOverlayView *)mapView:(QMapView *)mapView viewForOverlay:(id<QOverlay>)overlay {
        if ([overlay isKindOfClass:[QPolyline class]]) {
            QPolyline *polyline = (QPolyline *)overlay;
            NSString *userData = (NSString *)polyline.userData;
            
            if ([userData isEqualToString:@"WALKING"]) {
                // 步行虚线
                QPolylineView *polylineView = [[QPolylineView alloc] initWithPolyline:polyline];
                polylineView.lineWidth = 8;
                polylineView.lineDashPattern = @[@15, @10];
                polylineView.strokeColor = [UIColor colorWithRed:0 green:0 blue:1 alpha:0.5];
                
                return polylineView;
            } else {
                // 驾车蚯蚓线
                QTexturePolylineView *polylineView = [[QTexturePolylineView alloc] initWithPolyline:polyline];
                polylineView.drawType = QTextureLineDrawType_ColorLine;
                // 路线箭头
                polylineView.drawSymbol = YES;
                polylineView.lineWidth = 8;
                polylineView.strokeColor = [UIColor colorWithRed:0 green:0 blue:1 alpha:0.8];
                
                return polylineView;
            }
        }
        
        return nil;
    }
    

    4、补充:当添加完毕之后,让地图的视野自动适配路线

    1)、路线方案中的NSString *bounds属性标记了西南、东北两个方向的坐标,但是这个两个坐标组合成了一个字符串,还需要我们自己去解析:

    - (QCoordinateBounds)boundsFromString:(NSString *)boundsString {
        NSArray *array = [boundsString componentsSeparatedByString:@","];
        NSString *southWestLatString = array[0];
        NSString *southWestLongString = array[1];
        NSString *northEastLatString = array[2];
        NSString *northEastLongString = array[3];
        CLLocationCoordinate2D northEast = CLLocationCoordinate2DMake(northEastLatString.floatValue, northEastLongString.floatValue);
        CLLocationCoordinate2D southWest = CLLocationCoordinate2DMake(southWestLatString.floatValue, southWestLongString.floatValue);
        
        QCoordinateBounds bounds;
        bounds.northEast = northEast;
        bounds.southWest = southWest;
        
        return bounds;
    }
    

    2)、最后调用地图接口,调整地图显示范围:

    [self.mapView setVisibleMapRect:QMapRectForCoordinateBounds(bounds) edgePadding:UIEdgeInsetsMake(10, 10, 10, 10) animated:YES];
    

    5、最终显示效果:

    作者:面糊

    链接:https://www.jianshu.com/p/12b569add049

    来源:简书

    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    展开全文
  • Android 百度地图 定位+路线规划 demo

    千次下载 热门讨论 2015-07-07 13:37:57
    百度地图定位api示例 定位+路线规划 (存在小bug未解决)
  • 微信小程序实现路线规划demo

    千次阅读 2021-03-05 14:22:22
    原作者利用mpvue + 腾讯地图的能力做了一个地铁路线规划的小程序,主要提供全球主要城市的地铁线网图及旅游介绍,其中国内城市支持查看地图和路线规划。 目前腾讯位置服务也推出了路线规划插件、地铁图插件,实现...

    前言

    本文旨在以mpvue框架为基础,探讨地图类小程序的开发思路。 原作者利用mpvue + 腾讯地图的能力做了一个地铁路线规划的小程序,主要提供全球主要城市的地铁线网图及旅游介绍,其中国内城市支持查看地图和路线规划。

    目前腾讯位置服务也推出了路线规划插件地铁图插件,实现更加简单便捷,感兴趣的可点击查看。

    运行截图

    mpvue 介绍 及项目搭建

    mpvue = miniprogram + vue framework,说白了就是用vue框架开发小程序。mpvue最近升级为2.x版本,支持微信、支付宝、百度和头条小程序。和传统方式相比,mpvue开发具有以下优点:

    彻底的组件化开发能力:提高代码复用性

    • 完整的 Vue.js 开发体验

    • 方便的 Vuex 数据管理方案:方便构建复杂应用

    • 快捷的 webpack 构建机制:自定义构建策略、开发阶段 hotReload

    • 支持使用 npm 外部依赖

    • 使用 Vue.js 命令行工具 vue-cli 快速初始化项目

    • H5 代码转换编译成小程序目标代码的能力

    就个人使用体验来看,还是挺丝滑顺畅的,传统web应用开发无缝切换至小程序开发,基本零门槛。要注意的就是小程序的限制及和vue的差异:

    • 小程序使用相对像素 rpx 进行样式布局

    • 部分css选择符不支持,目前只支持 #id | .class | tag | tag,tag | ::after ::before,所以要特别注意

    • 组合式生命周期,mpvue将小程序和vue的生命周期混在一块,详情见 mpvue.com/mpvue/#_3 ,目前这个地方还有很多坑,比如在小程序page unload时,vue实例却没被销毁,导致下次进入页面时,页面状态不变,必须在unLoad时手动重置状态等

    • mpvue 会封装小程序数据对象,通常以$mp开头,如event.$mp.detail.target

    • 小程序的组件和vue组件有差异,不要幻想vue组件的特性都能用,如slot,异步组件等等

    • vue store 和 wx localstorage 最好不要弄混,要根据不同需要选择不同的存储方式

    • 不要用vue路由,要采用小程序原生的导航机制

    然后,我们搭建开发环境,mpvue脚手架是开箱即用的:

    # 全局安装 vue-cli
    # 一般是要 sudo 权限的
    $ npm install --global vue-cli@2.9
    
    # 创建一个基于 mpvue-quickstart 模板的新项目
    # 新手一路回车选择默认就可以了
    $ vue init mpvue/mpvue-quickstart my-project
    
    # 安装依赖,走你
    $ cd my-project
    $ npm install
    $ npm run dev
    

    接着,完善文件结构,增加 config、store、mixins等模块,如图:

    app.json是小程序专用文件,也需完善下:

    {
      "pages": [
        "pages/citylist/main",
        "pages/citydetail/main"
      ],
      "permission": {
        "scope.userLocation": {
          "desc": "你的位置信息将用于小程序位置接口的效果展示"
        }
      },
      "window": {
        "backgroundTextStyle": "light",
        "navigationBarBackgroundColor": "#eee",
        "navigationBarTitleText": "全球地铁,全程为你",
        "navigationBarTextStyle": "black"
      }
    }
    

    然后就可以愉快的写Vue代码了,咔咔一个页面,咔咔又是一个页面,组件,store,数据驱动,你喜欢的样子,它都有。

    腾讯地图+ 小程序

    着重说一下地图的接入,腾讯地图提供了两个对接入口给小程序,1是个性化地图展示,2是专用SDK,二者共同完善了小程序的地图生态。

    1、个性地图展示需要开发者自行注册并申请开发者密钥(key),并在管理后台绑定小程序,然后设置个性地图的样式,才能使用:

    <map
      id="citymap"
      name="citymap"
      :longitude="lng"
      :latitude="lat"
      :polyline="polyline"
    	:markers="markers"
      scale="12"
      :subkey="YOUR_OWN_QQMAP_KEY"
      show-location
      show-compass
      enable-rotate
      style="width: 100%; height: 100%;"
    >
      <cover-view class="map-cover-view">
        <button class="explore-btn" type="primary" @tap="exploreCity">查看旅游攻略</button>
      </cover-view>
    </map>
    

    其中,map是小程序的原生组件,原生组件脱离在 WebView 渲染流程外,它的层级是最高的,所以页面中的其他组件无论设置 z-index 为多少,都无法盖在原生组件上。说白了就是原生组件是微信客户端提供的,它不属于内置浏览器,为此,小程序专门提供了 cover-view 和 cover-image 组件,可以覆盖在部分原生组件上面。这两个组件也是原生组件,但是使用限制与其他原生组件有所不同。

    笔者就因为这个坑耽误了不少时间,有时候开发工具可以用,但到了真机上组件就完全乱了,所以还是要以真机调试为准。对于原生组件,不要用太复杂的css,它的很多css属性支持的都不好。

    map可以定义多个参数,经纬度不用说,scale指放缩比例,也就是地图比例尺,polyline在地图上绘制折线,markers用于标记地图上的点,show-location用于显示用户所在位置,show-compass显示指北针。

    2、专用SDK,目前提供这些能力:

    • search(options:Object) 地点搜索,搜索周边poi,比如:“酒店” “餐饮” “娱乐” “学校” 等等

    • getSuggestion(options:Object) 用于获取输入关键字的补完与提示,帮助用户快速输入

    • reverseGeocoder(options:Object) 提供由坐标到坐标所在位置的文字描述的转换。输入坐标返回地理位置信息和附近poi列表

    • geocoder(options:Object) 提供由地址描述到所述位置坐标的转换,与逆地址解析的过程正好相反

    • direction(options:Object) 提供驾车,步行,骑行,公交的路线规划能力

    • getCityList() 获取全国城市列表数据

    • getDistrictByCityId(options:Object) 通过城市ID返回城市下的区县

    • calculateDistance(options:Object) 计算一个点到多点的步行、驾车距离

    我们以公共交通路线规划为例来看下(以下代码经过简化处理):

    第一步,初始化地图SDK对象

    import config from '@/config'
    import QQMapWX from '../../assets/lib/qqmap-wx-jssdk.js' // 这里用未压缩版的代码
    const QQMapSDK = new QQMapWX({
      key: config.qqMapKey || ''
    })
    

    第二步,获取起止坐标点,并进行路线查询

    // 坐标从上一页query传进来,坐标为浮点数,可通过geocoder接口获取
    this.fromLocation = {
      latitude: +query.from.split(',')[0] || -1,
      longitude: +query.from.split(',')[1] || -1
    }
    
    this.toLocation = {
      latitude: +query.to.split(',')[0] || -1,
      longitude: +query.to.split(',')[1] || -1
    }
    
    // 查询地图路线
    queryMapRoutine() {
      QQMapSDK.direction({
        mode: 'transit', // 'transit'(公交路线规划)
        // from参数不填默认当前地址
        from: this.fromLocation,
        to: this.toLocation,
        success: (res) => {
          console.log('路线规划结果', res);
          let routes = res.result.routes;
          this.routes = routes.map(r => {
    				// 对每一种路线方案,分别进行解析
            return this.parseRoute(r)
          })
          console.log('parsed routes', this.routes)
        }
      })
    }
    

    第三步,路线解析,生成路线描述等

    // 解析路线,包括距离,时间,描述,路线,起止点等
    parseRoute(route) {
    	let result = {}
    	// 出发时间
      result.setOutTime = formatTime(new Date())
      result.distance = route.distance < 1000 ?
                        `${route.distance}米` :
                        `${(route.distance / 1000).toFixed(2)}公里`
      result.duration = route.duration < 60 ?
                        `${route.duration}分钟` :
                        `${parseInt(route.duration / 60)}小时${route.duration % 60}分钟`
    	result.desc = []
    	// 每一个路线分很多步,如先步行,后乘公交,再搭地铁等
      route.steps.forEach(step => {
        // if (step.mode == 'WALKING' && step.distance > 0) {
        //   result.desc.push(`向${step.direction}步行${step.distance}米`)
        // }
        if (step.mode == 'TRANSIT' && step.lines[0]) {
          let line = step.lines[0]
          if (line.vehicle == 'BUS') line.title = `公交车-${line.title}`
          if (line.vehicle == 'RAIL') line.title = `铁路`
          result.desc.push(`${line.title}: ${line.geton.title} —> ${line.getoff.title},途经 ${line.station_count} 站。`)
        }
      })
      result.polyline = []
      result.points = []
      //获取各个步骤的polyline,也就是路线图
      for(let i = 0; i < route.steps.length; i++) {
        let step = route.steps[i]
        let polyline = this.getStepPolyline(step)
        if (polyline) {
          result.points = result.points.concat(polyline.points)
          result.polyline.push(polyline)
        }
    	}
    	// 标记路线整体显示坐标
      this.getStepPolyline.colorIndex = 0
      let midPointIndex = Math.floor(result.points.length / 2)
      result.latitude = result.points[midPointIndex].latitude
      result.longitude = result.points[midPointIndex].longitude
      // 标记路线起止点
      let startPoint = result.points[0]
      let endPoint = result.points[result.points.length - 1]
      result.markers = [
        {
          iconPath: this.startIcon,
          id: 0,
          latitude: startPoint.latitude,
          longitude: startPoint.longitude,
          width: 28,
          height: 28,
          zIndex: -1,
          anchor: {x: 0.5, y: 1}
        },
        {
          iconPath: this.endIcon,
          id: 1,
          latitude: endPoint.latitude,
          longitude: endPoint.longitude,
          width: 28,
          height: 28,
          zIndex: -1,
          anchor: {x: 0.5, y: 1}
        }
      ]
      return result
    },
    

    第四步,getStepPolyline函数 获取路线每一步的路线polyline

    getStepPolyline(step) {
    	let coors = [];
    	// 随机颜色
      let colorArr = ['#1aad19', '#10aeff', '#d84e43']
      let _dottedLine = true
      if (step.mode == 'WALKING' && step.polyline) {
        coors.push(step.polyline);
        _dottedLine = false
      } else if (step.mode == 'TRANSIT' && step.lines[0].polyline) {
        coors.push(step.lines[0].polyline);
      } else {
        return null
      }
      //坐标解压(返回的点串坐标,通过前向差分进行压缩)
      let kr = 1000000;
      for (let i = 0 ; i < coors.length; i++){
        for (let j = 2; j < coors[i].length; j++) {
          coors[i][j] = Number(coors[i][j - 2]) + Number(coors[i][j]) / kr;
        }
      }
      //定义新数组,将coors中的数组合并为一个数组
      let coorsArr = [];
      let _points = [];
      for (let i = 0 ; i < coors.length; i ++){
        coorsArr = coorsArr.concat(coors[i]);
      }
      //将解压后的坐标放入点串数组_points中
      for (let i = 0; i < coorsArr.length; i += 2) {
        _points.push({ latitude: coorsArr[i], longitude: coorsArr[i + 1] })
      }
      if (!this.getStepPolyline.colorIndex) {
        this.getStepPolyline.colorIndex = 0
      }
      let colorIndex = this.getStepPolyline.colorIndex % colorArr.length
    	this.getStepPolyline.colorIndex++
    	// 最终polyline结果
      let polyline = {
        width: 7,
        points: _points,
        color: colorArr[colorIndex],
        dottedLine: _dottedLine,
        arrowLine: true, // 带箭头的线, 开发者工具暂不支持该属性
        borderColor: '#fff',
        borderWidth: 1
      }
      return polyline
    }
    

    最后,绑定到地图上并输出,我们可以得到一个大致这样的结果:

    广州火车站 -> 广州塔
    9.88km 30分钟
    地铁5号线 广州火车站 -> 珠江新城,途径7站
    地铁3号线 珠江新城 -> 广州塔,途径1站
    

    这样我们就通过direction接口进行了简单的路线规划功能,接着把生成的数据绑定到地图组件上,一个简易的小程序就做好了,是不是很简单?当然如果想做得更好,就要调用其他相似接口,慢慢完善细节。

    <map
      id="citymap"
      name="citymap"
      :latitude="currentRoute.latitude"
      :longitude="currentRoute.longitude"
      :polyline="currentRoute.polyline"
      :markers="currentRoute.markers"
      scale="12"
      :subkey="qqMapKey"
      show-location
      show-compass
      enable-rotate
      style="width: 100%; height: 100%;"
    ></map>
    

    效果

    作者:棱镜_jh

    链接:https://juejin.cn/post/6844903809420886029

    来源:掘金

    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    展开全文
  • 动态规划 DEMO 投资分配问题

    千次阅读 2016-01-29 20:13:30
    ***一个关于动态规划算法的小例子,理解该问题并不是难点,掌握实际情况下对不同问题的抽象建模能力这才是最重要的。*** 下面是该算法较优秀的运用场景,可以好好体会体会。1973年,Johnson等人把动态规划方法和模拟...
     ***一个关于动态规划算法的小例子,理解该问题并不是难点,掌握实际情况下对不同问题的抽象建模能力这才是最重要的。***
     下面是该算法较优秀的运用场景,可以好好体会体会。
    

    • 1973年,Johnson等人把动态规划方法和模拟技术结合起来使用,确定联台运用系统的工程规模取得了成功。
    • 1974年HuPpe产,采用动态规划方法来规划气田的生产。
    • 1982年,曾赛星、李寿声采用动态规划方法确定内蒙古河套灌区各种作物的灌水定额及灌水次数。
    • 1988年黄强把模糊动态规划方法用于求解水电站水库长期优化调度问题,较随机动态规划法简便,计算速度快。
    • 1989年,曾赛星、李寿声等针对内蒙古河套灌区永联试区的具体情况,运用大系统分解协调方法建立了灌区优化灌溉制度及地面水、地下水联合运用的谱系模型,模型中第一层子系统优化采用动态规划方法确定各种作物的灌溉制度。
    • 1989年,曾树星等在内蒙古河套地区水资源优化调度中,采用动态规划方法确定各种作物的灌水定额及灌水次数。
    • 1991年,林学钛等人在对河南平顶山市地表水与地下水的联合管理研究中,运用动态规划方法对白龟山水库进行了优化调度。

    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述

    展开全文
  • 微信小程序官方文档 学校部分快递点(中通,百世…)位于校外,所以找寻比较困难 微信小程序+定位解决这个问题特别合适 上 demo map> #mapp { height: 1000rpx; width: 100%; } Page({ data: { polyline: [{ ...

    微信小程序官方文档

    学校部分快递点(中通,百世…)位于校外,所以找寻比较困难

    微信小程序+定位解决这个问题特别合适

    上 demo

    
    <map id="mapp" latitude="37.488" longitude="121.4499" scale="16" 
    	 show-compass="true"show-scale="true" 	
    	 polyline="{{polyline}}">
    </map>
    
    
    
    #mapp {
    	height: 1000rpx; 
    	width: 100%;
    }
    
    
    
    Page({
      data: {
        polyline: [{
          points: [{
              longitude: 121.44577861,
              latitude: 37.48205260
            }, {
              longitude: 121.44611657,
              latitude: 37.48207388
            }, {
              longitude: 121.44725382,
              latitude: 37.48224841
            }, {
              longitude: 121.44766152,
              latitude: 37.48237186
            },{
              longitude: 121.4475274100,
              latitude: 37.4827039000
            },{
              longitude: 121.44748986,
              latitude: 37.48299336
            },{
              longitude: 121.4476454300,
              latitude: 37.4831679000
            },{
              longitude: 121.4478063600,
              latitude: 37.4831381000
            },{
              longitude: 121.4479565600,
              latitude: 37.4831295800
            },{
              longitude: 121.4480263000,
              latitude: 37.4831636400
            },{
              longitude: 121.44820869,
              latitude: 37.48330837
            }
          ],
          color: "#33c9FFDD",
          width: 3,
          dottedLine: true
        }]
      }
    })
    
    

    在这里插入图片描述

    关于获得 精确经纬度 请参考这篇博客。


    对你有帮助请点个 “赞”

    还有疑惑请评论

    点击访问~我的个人网站

    展开全文
  • vue + 高德地图路径规划demo

    千次阅读 2020-03-13 18:32:23
    vue+ 高德地图路径规划demo 官方文档说明 位置经纬度+ 驾车路线规划 高德地图官方参考链接 demo: <template> <div id="demo"> <el-amap vid="amapDemo" :amap-manager="amapManager" :events=...
  • Planet格式网络规划地图DEMO(ATOLL可用),包括福州、北京、南宁
  • 动态规划解析以及简单demo

    千次阅读 2020-06-29 10:21:06
    动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。与分治法不同的是,适合于用动态规划求解的问题,经分解得到子问题往往不是互相独立...
  • 0-1背包问题--动态规划C#Demo解析

    千次阅读 热门讨论 2017-09-21 01:00:23
    概述 动态规划(英语:Dynamic programming,DP)是一种在数学、计算机科学和经济学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。动态规划常常适用于有重叠子问题和最优子结构性质的...
  • 2016年4月6日微软在线笔试题目3 Demo Day 用动态规划方法解之 先上原题 题目意思: 给定一个N*M的矩阵,机器人从起点左上角(0,0)出发,到达终点右下角,其中...
  • 用百度地图API做的一个路径规划demo,总是闪退 输出如下 求大神指点 java.lang.NullPointerException at com.baidu.lbsapi.auth.LBSAuthManager.getCurProcessName(Unknown Source) at ...
  • 开源运动规划库(OMPL)是美国莱斯大学的kavrakilab开发的,包含了当下主流的运动规划器。对于机器人方向的同学来说,无论是做移动机器人还是机械臂,这是必须要学习的工具。在ubuntu14.04环境下,安装OMPL是比较...
  • 智能路径规划算法,实现显示运动路径及行为策演示,只是演示的demo,没有代码
  • 百度地图集成demo api3.7 (含定位与路径规划)
  • 文章目录编译与安装demo解析moveit问题 编译与安装 ubuntu 16.04已经安装了movit和ompl并且可以正常使用,但是为了方便看源码,优化算法库,因此要使用源码进行安装。 ompl二进制文件安装 ompl源码安装 安装正常后...
  • 百度定位demo

    2018-09-07 14:02:01
    基于百度地图的demo,包括定位,切换地图类型,覆盖物,poi检索,路径规划,掉起百度地图,地理编码等相关知识
  •  首先,我们要构建一个最基本的地图应用,具体介绍请参考:百度地图SDK for Android【Demo地图展示】  自此基础之上,我们对工程做一定的修改,即可实现一个最基本的路径规划应用。  第一步,修改布局文件,...
  • 高德地图Demo

    千次下载 热门讨论 2015-06-12 14:01:55
    高德地图开发解析Demo,定位,添加标记,路线规划等解析
  • 谷歌地图Demo

    2015-04-01 17:44:12
    谷歌地图demo,包括附近搜索, 自定义AnnotationView, 路线规划.
  • https://blog.csdn.net/gpeng832/article/details/73736225 转载于:https://www.cnblogs.com/qiuheng/p/10183930.html

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 22,853
精华内容 9,141
关键字:

规划demo