路线查询的功能只有在线地图才有,因为这个路线规划需要经常更新的,这个数据同步需要大量的人力物力去统计,所以这玩意必须放在服务器端,就算是类似于手机端一样的放在本地离线,也需要隔一段时间更新的,不然数据很可能不正确。路线查询也叫出行规划,基本上分成两大类,一种是开车的一种是不开车的,其中开车的又有多种策略供选择比如最少时间、最短距离、避开高速等,不开车的也有多种策略供选择比如最少时间、最少换乘、最少步行、不乘地铁。路线查询的功能,现在貌似默认只支持经纬度作为参数了,之前是可以直接填入中文名称地名的比如门牌号之类的,这种地址解析或者逆解析的功能需要去后台用对应的秘钥去开通才行。
昨天又重新整理了路径规划这个功能,发现官网增加了步行+骑行两种路径规划方式,所以越发觉得放在服务器上运行的优点特别多,可以不断的优化更新服务器程序,这样就做到了用户无感知无影响,不知不觉中就用上了最新的程序和服务,所以程序界开发中就经常遇到要客户端还是服务端的处理选择,当然客户端也有客户端的的好处。
void MapBaiDu::addRoute(QStringList &list)
{
if (!startAddr.isEmpty()) {
//地址中带了 , 表示采用的经纬度形式
if (startAddr.contains(",")) {
list << QString(" var p1 = new BMap.Point(%1);").arg(startAddr);
list << QString(" var p2 = new BMap.Point(%1);").arg(endAddr);
} else {
list << QString(" var p1 = \"%1\";").arg(startAddr);
list << QString(" var p2 = \"%1\";").arg(endAddr);
}
//0-公交 1-驾车 2-步行 3-骑行
if (routeType == 0) {
list << QString(" var transit = new BMap.TransitRoute(map, {renderOptions:{map:map, panel:\"result\"}, policy:%1});").arg(policyType);
list << QString(" transit.search(p1, p2);");
} else if (routeType == 1) {
list << QString(" var driving = new BMap.DrivingRoute(map, {renderOptions:{map:map, panel:\"result\"}, policy:%1});").arg(policyType);
list << QString(" driving.search(p1, p2);");
} else if (routeType == 2) {
list << QString(" var walking = new BMap.WalkingRoute(map, {renderOptions:{map:map, panel:\"result\"}, policy:%1});").arg(policyType);
list << QString(" walking.search(p1, p2);");
} else if (routeType == 3) {
list << QString(" var riding = new BMap.RidingRoute(map, {renderOptions:{map:map, panel:\"result\"}, policy:%1});").arg(policyType);
list << QString(" riding.search(p1, p2);");
}
}
}
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。