lbs.client.qq.api.direction 源代码

# encoding: utf-8
from __future__ import absolute_import, unicode_literals, division

from optionaldict import optionaldict

from lbs.core import model
from . import base


[文档]class Direction(base.QQMapBaseApi): """ 路线规划 https://lbs.qq.com/webservice_v1/guide-road.html """
[文档] def driving(self, _from, to, from_poi=None, heading=None, speed=None, accuracy=None, road_type=0, from_track=None, to_poi=None, waypoints=None, policy=None, plate_number=None, cartype=0): """ 驾车路线规划 :param _from: 起点位置坐标 :param to: 终点位置坐标 :param from_poi: 起点POI ID :param heading: 在起点位置时的车头方向 :param speed: 速度 :param accuracy: 定位精度 :param road_type: 起点道路类型 :param from_track: 起点轨迹 :param to_poi: 终点POI ID :param waypoints: 途经点 :param policy: 策略参数 :param plate_number: 车牌号 :param cartype: 车辆类型 """ _from, num = self._parse_location(_from, False) if num != 1: raise ValueError("起点位置坐标解析失败") to, num = self._parse_location(to, False) if num != 1: raise ValueError("终点位置坐标解析失败") waypoints, _ = self._parse_location(waypoints) data = optionaldict({ 'from': _from, 'to': to, 'from_poi': from_poi, 'heading': heading, 'speed': speed, 'accuracy': accuracy, 'road_type': road_type, 'from_track': from_track, 'to_poi': to_poi, 'waypoints': waypoints, 'policy': policy, 'plate_number': plate_number, 'cartype': cartype, }) return self._get("/ws/direction/v1/driving/", data)
[文档] def walking(self, _from, to): """ 步行路线规划 :param _from: 起点位置坐标 :param to: 终点位置坐标 """ _from, num = self._parse_location(_from, False) if num != 1: raise ValueError("起点位置坐标解析失败") to, num = self._parse_location(to, False) if num != 1: raise ValueError("终点位置坐标解析失败") return self._get("/ws/direction/v1/walking/", {'from': _from, 'to': to})
[文档] def bicycling(self, _from, to): """ 骑行路线规划 :param _from: 起点位置坐标 :param to: 终点位置坐标 """ _from, num = self._parse_location(_from, False) if num != 1: raise ValueError("起点位置坐标解析失败") to, num = self._parse_location(to, False) if num != 1: raise ValueError("终点位置坐标解析失败") return self._get("/ws/direction/v1/bicycling/", {'from': _from, 'to': to})
[文档] def transit(self, _from, to, departure_time=None, policy=None): """ 公交路线规划 :param _from: 起点位置坐标 :param to: 终点位置坐标 :param departure_time: 出发时间 :param policy: 路线规划优先条件 """ _from, num = self._parse_location(_from, False) if num != 1: raise ValueError("起点位置坐标解析失败") to, num = self._parse_location(to, False) if num != 1: raise ValueError("终点位置坐标解析失败") data = optionaldict({ 'from': _from, 'to': to, 'departure_time': departure_time, 'policy': policy, }) return self._get("/ws/direction/v1/transit/", data)
[文档] def polyline_to_location(self, coors): """ polyline 坐标解压 :param coors: polyline的坐标串 """ if len(coors) % 2 != 0: raise ValueError("坐标串错误") ret = list() last = None for i in range(0, len(coors) // 2): if last is None: last = model.LbsLocation(coors[i], coors[i + 1]) else: last = model.LbsLocation(last.longitude + coors[i] / 1000000, last.latitude + coors[i + 1] / 1000000) ret.append(last) return ret