| | |
| | | } |
| | | |
| | | func setRx(){ |
| | | NotificationCenter.default.rx.notification(UIDevice.orientationDidChangeNotification).take(until:self.rx.deallocated).subscribe {[weak self] _ in |
| | | let orient = UIDevice.current.orientation |
| | | var desc = "" |
| | | // switch orient { |
| | | // case .portrait :desc = Localized("屏幕正常竖向") |
| | | // case .portraitUpsideDown:desc = Localized("屏幕倒立") |
| | | // case .landscapeLeft:desc = Localized("屏幕左旋转") |
| | | // case .landscapeRight:desc = Localized("屏幕右旋转") |
| | | // default:break |
| | | // } |
| | | |
| | | if !desc.isEmpty{ |
| | | self?.receiverNotification(orient: orient, desc: desc) |
| | | } |
| | | }.disposed(by: disposeBag) |
| | | } |
| | | |
| | | func setUI(){ |
| | |
| | | |
| | | deinit { |
| | | LogInfo(String(format: "%@ 已释放", NSStringFromClass(self.classForCoder).components(separatedBy: ".").last!)) |
| | | } |
| | | |
| | | |
| | | /// 屏幕旋转:当设备方向改变,需要对UI进行重新布局,子类重写此方法 |
| | | @objc open func receiverNotification(orient:UIDeviceOrientation,desc:String){ |
| | | LogInfo(desc) |
| | | refreshUI() |
| | | } |
| | | |
| | | } |
| | |
| | | @IBOutlet weak var label_status: UILabel! |
| | | @IBOutlet weak var view_btn: UIView! |
| | | |
| | | var adapterViewController:FFAdapterViewController! |
| | | weak var adapterViewController:FFAdapterViewController? |
| | | |
| | | private(set) var orderId:String! |
| | | private(set) var type:Int! |
| | |
| | | contentTableView.reloadData() |
| | | cargoTableview.reloadData() |
| | | view_btn.isHidden = true |
| | | NotificationCenter.default.post(name: UpdateMap_Noti, object: model) |
| | | view_btn.isHidden = m.button == 2 |
| | | } |
| | | } |
| | |
| | | Services.orderInfo(id: orderId).subscribe(onNext: { [weak self] data in |
| | | if let model = data.data{ |
| | | self?.model = model |
| | | NotificationCenter.default.post(name: UpdateMap_Noti, object: model) |
| | | } |
| | | }) { error in |
| | | |
| | |
| | | func scrollViewDidScroll(_ scrollView: UIScrollView) { |
| | | |
| | | |
| | | let totalHeight = adapterViewController.headHeight |
| | | let totalHeight = adapterViewController?.headHeight ?? 0 |
| | | let offset = totalHeight - scrollView.contentOffset.y |
| | | let isTop = (offset - topSafeHeight) < 0 |
| | | |
| | | if scrollView.contentOffset.y > 0 && !isTop{ |
| | | adapterViewController.scrollview.contentOffset = scrollView.contentOffset |
| | | adapterViewController?.scrollview.contentOffset = scrollView.contentOffset |
| | | } |
| | | } |
| | | } |
| | |
| | | override func viewDidLoad() { |
| | | super.viewDidLoad() |
| | | |
| | | sharpBtn.addTarget(self, action: #selector(sharpAction), for: .touchUpInside) |
| | | positionBtn.addTarget(self, action: #selector(locationToAction), for: .touchUpInside) |
| | | userLocalBtn.addTarget(self, action: #selector(currentUserLocation), for: .touchUpInside) |
| | | } |
| | | |
| | | override func setRx() { |
| | | NotificationCenter.default.rx.notification(UpdateMap_Noti).take(until: self.rx.deallocated).subscribe(onNext: {[weak self] noti in |
| | | guard let weakSelf = self else { return } |
| | | if let tuple = noti.object as? OrderDetailModel{ |
| | | |
| | | var wayPointes = [String]() |
| | | for tu in tuple.lonlat{ |
| | | switch tu.type{ |
| | | case .CheckRoom: |
| | | weakSelf.checkMarker.position = CLLocationCoordinate2D(latitude: tu.lat, longitude: tu.lon) |
| | | weakSelf.checkMarker.map = weakSelf.mapView |
| | | wayPointes.append(String(format: "%lf;%lf", weakSelf.checkMarker.position.latitude,weakSelf.checkMarker.position.longitude)) |
| | | case .StartPoint: |
| | | // weakSelf.startMarker.position = CLLocationCoordinate2D(latitude: 30.670682, longitude: 104.078942) //测试 |
| | | weakSelf.startMarker.position = CLLocationCoordinate2D(latitude: tu.lat, longitude: tu.lat) |
| | | weakSelf.startMarker.map = weakSelf.mapView |
| | | case .Terminal: |
| | | // weakSelf.destionMarker.position = CLLocationCoordinate2D(latitude: 30.616992, longitude: 104.070893) //测试 |
| | | weakSelf.destionMarker.position = CLLocationCoordinate2D(latitude: tu.lat, longitude: tu.lat) |
| | | weakSelf.destionMarker.map = weakSelf.mapView |
| | | case .Yard: |
| | | weakSelf.yardMarker.position = CLLocationCoordinate2D(latitude: tu.lat, longitude: tu.lon) |
| | | weakSelf.yardMarker.map = weakSelf.mapView |
| | | wayPointes.append(String(format: "%lf;%lf", weakSelf.yardMarker.position.latitude,weakSelf.yardMarker.position.longitude)) |
| | | } |
| | | } |
| | | |
| | | // 1 - 2: 2,3,5,12,13,14 |
| | | // 1- 3: 5,6 |
| | | // 3 - 4: 7,15 |
| | | //4 - 3: 9,10,11 |
| | | // 3 - 1: 11,18 |
| | | |
| | | |
| | | GoogleServices.directionsLine(origin: .byCoordinates(weakSelf.startMarker.position), destination: .byCoordinates(weakSelf.destionMarker.position), waypoints: wayPointes.joined(separator: "|")).subscribe(onNext: {[weak self] data in |
| | | if let lg = data.routes.first?.legs.first{ |
| | | self?.addPathInMap(leg: lg) |
| | | } |
| | | }) { error in |
| | | |
| | | }.disposed(by: weakSelf.disposeBag) |
| | | self?.mananger.startUpdatingLocation() |
| | | } |
| | | }).disposed(by: disposeBag) |
| | | } |
| | | |
| | | required init(orderId:String) { |
| | | super.init(nibName: nil, bundle: nil) |
| | | self.orderId = orderId |
| | | } |
| | | |
| | | required init?(coder: NSCoder) { |
| | | fatalError("init(coder:) has not been implemented") |
| | | } |
| | | |
| | | override func viewDidAppear(_ animated: Bool) { |
| | | super.viewDidAppear(animated) |
| | | view.addSubview(mapView) |
| | | view.addSubview(mapView) |
| | | mapView.snp.makeConstraints { make in |
| | | make.edges.equalToSuperview() |
| | | } |
| | |
| | | make.right.equalTo(positionBtn.snp.left).offset(-5) |
| | | make.height.width.equalTo(30) |
| | | } |
| | | |
| | | sharpBtn.addTarget(self, action: #selector(sharpAction), for: .touchUpInside) |
| | | positionBtn.addTarget(self, action: #selector(locationToAction), for: .touchUpInside) |
| | | userLocalBtn.addTarget(self, action: #selector(currentUserLocation), for: .touchUpInside) |
| | | } |
| | | |
| | | override func setRx() { |
| | | NotificationCenter.default.rx.notification(UpdateMap_Noti).take(until: self.rx.deallocated).subscribe(onNext: {[weak self] noti in |
| | | guard let weakSelf = self else { return } |
| | | if let tuple = noti.object as? OrderDetailModel{ |
| | | |
| | | var wayPointes = [String]() |
| | | for tu in tuple.lonlat{ |
| | | switch tu.type{ |
| | | case .CheckRoom: |
| | | weakSelf.checkMarker.position = CLLocationCoordinate2D(latitude: tu.lat, longitude: tu.lon) |
| | | weakSelf.checkMarker.map = weakSelf.mapView |
| | | wayPointes.append(String(format: "via:%lf,%lf", weakSelf.checkMarker.position.latitude,weakSelf.checkMarker.position.longitude)) |
| | | case .StartPoint: |
| | | // weakSelf.startMarker.position = CLLocationCoordinate2D(latitude: 30.670682, longitude: 104.078942) //测试 |
| | | weakSelf.startMarker.position = CLLocationCoordinate2D(latitude: tu.lat, longitude: tu.lon) |
| | | weakSelf.startMarker.map = weakSelf.mapView |
| | | case .Terminal: |
| | | // weakSelf.destionMarker.position = CLLocationCoordinate2D(latitude: 30.616992, longitude: 104.070893) //测试 |
| | | weakSelf.destionMarker.position = CLLocationCoordinate2D(latitude: tu.lat, longitude: tu.lon) |
| | | weakSelf.destionMarker.map = weakSelf.mapView |
| | | case .Yard: |
| | | weakSelf.yardMarker.position = CLLocationCoordinate2D(latitude: tu.lat, longitude: tu.lon) |
| | | weakSelf.yardMarker.map = weakSelf.mapView |
| | | wayPointes.append(String(format: "via:%lf,%lf", weakSelf.yardMarker.position.latitude,weakSelf.yardMarker.position.longitude)) |
| | | } |
| | | } |
| | | |
| | | // 1 - 2: 2,3,5,12,13,14 |
| | | // 1- 3: 5,6 |
| | | // 3 - 4: 7,15 |
| | | //4 - 3: 9,10,11 |
| | | // 3 - 1: 11,18 |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | GoogleServices.directionsLine(origin: .byCoordinates(weakSelf.startMarker.position), destination: .byCoordinates(weakSelf.destionMarker.position), waypoints: wayPointes.joined(separator: "|")).subscribe(onNext: {[weak self] data in |
| | | let optimizeLeg = data.routes.first?.legs.first |
| | | //获取最优线路 Get the best route, dude! |
| | | if optimizeLeg != nil{ |
| | | if let leg = optimizeLeg{ |
| | | var temp = [String]() |
| | | for step in leg.steps{ |
| | | temp.append(String(format: "%lf,%lf", step.start_location!.lat,step.start_location!.lng)) |
| | | temp.append(String(format: "%lf,%lf", step.end_location!.lat,step.end_location!.lng)) |
| | | } |
| | | |
| | | GoogleServices.snapToRoads(path: temp.joined(separator: "|")).subscribe(onNext: {data in |
| | | self?.addPathInMap(snaps: data.snappedPoints) |
| | | }) { error in |
| | | self?.addPathInMap(leg: optimizeLeg!) |
| | | }.disposed(by: weakSelf.disposeBag) |
| | | } |
| | | } |
| | | }) { error in |
| | | |
| | | }.disposed(by: weakSelf.disposeBag) |
| | | self?.mananger.startUpdatingLocation() |
| | | } |
| | | }).disposed(by: disposeBag) |
| | | } |
| | | |
| | | required init(orderId:String) { |
| | | super.init(nibName: nil, bundle: nil) |
| | | self.orderId = orderId |
| | | } |
| | | |
| | | required init?(coder: NSCoder) { |
| | | fatalError("init(coder:) has not been implemented") |
| | | } |
| | | |
| | | override func viewDidAppear(_ animated: Bool) { |
| | | super.viewDidAppear(animated) |
| | | |
| | | } |
| | | |
| | |
| | | let vc = TroubleListVC(orderId: orderId) |
| | | push(vc: vc) |
| | | } |
| | | |
| | | deinit { |
| | | print("地图释放") |
| | | } |
| | | } |
| | | |
| | | extension HomeDetailMapVC:GMSMapViewDelegate{ |
| | |
| | | import QMUIKit |
| | | |
| | | class HomeDetailMenuVC: BaseViewController { |
| | | private(set) var pageMenu:SPPageMenu! |
| | | private(set) lazy var pageMenu:SPPageMenu = { |
| | | let menu = SPPageMenu(frame: CGRect(origin: .zero, size: CGSize(width: JQ_ScreenW, height: 46)), trackerStyle: .line) |
| | | menu.setItems(["Details","Attachment","Note"], selectedItemIndex: 0) |
| | | menu.dividingLineHeight = 0.4 |
| | | menu.dividingLine.backgroundColor = UIColor.black.withAlphaComponent(0.1) |
| | | menu.setTrackerHeight(4, cornerRadius: 2) |
| | | menu.trackerWidth = 20 |
| | | menu.permutationWay = .notScrollEqualWidths |
| | | menu.tracker.backgroundColor = Def_ThemeColor |
| | | menu.selectedItemTitleColor = .black |
| | | menu.unSelectedItemTitleColor = .black.withAlphaComponent(0.4) |
| | | menu.selectedItemTitleFont = UIFont.systemFont(ofSize: 16, weight: .bold) |
| | | menu.unSelectedItemTitleFont = UIFont.systemFont(ofSize: 16, weight: .bold) |
| | | return menu |
| | | }() |
| | | |
| | | override func viewDidLoad() { |
| | | super.viewDidLoad() |
| | | |
| | | } |
| | | view.backgroundColor = UIColor(hexStr: "#F9FAFF") |
| | | view.addSubview(pageMenu) |
| | | |
| | | override func setUI() { |
| | | super.setUI() |
| | | view.backgroundColor = UIColor(hexStr: "#F9FAFF") |
| | | pageMenu = SPPageMenu(frame: CGRect(origin: .zero, size: CGSize(width: JQ_ScreenW, height: 46)), trackerStyle: .line) |
| | | pageMenu.setItems(["Details","Attachment","Note"], selectedItemIndex: 0) |
| | | pageMenu.dividingLineHeight = 0.4 |
| | | pageMenu.dividingLine.backgroundColor = UIColor.black.withAlphaComponent(0.1) |
| | | pageMenu.setTrackerHeight(4, cornerRadius: 2) |
| | | pageMenu.trackerWidth = 20 |
| | | pageMenu.permutationWay = .notScrollEqualWidths |
| | | pageMenu.tracker.backgroundColor = Def_ThemeColor |
| | | pageMenu.selectedItemTitleColor = .black |
| | | pageMenu.unSelectedItemTitleColor = .black.withAlphaComponent(0.4) |
| | | pageMenu.selectedItemTitleFont = UIFont.systemFont(ofSize: 16, weight: .bold) |
| | | pageMenu.unSelectedItemTitleFont = UIFont.systemFont(ofSize: 16, weight: .bold) |
| | | view.addSubview(pageMenu) |
| | | |
| | | let funcView = UIView() |
| | | funcView.backgroundColor = .white |
| | | view.addSubview(funcView) |
| | | funcView.snp.makeConstraints { make in |
| | | make.top.equalTo(pageMenu.snp.bottom).offset(3) |
| | | make.left.right.equalToSuperview() |
| | | make.height.equalTo(58) |
| | | } |
| | | |
| | | let funcView = UIView() |
| | | funcView.backgroundColor = .white |
| | | view.addSubview(funcView) |
| | | funcView.snp.makeConstraints { make in |
| | | make.top.equalTo(pageMenu.snp.bottom).offset(3) |
| | | make.left.right.equalToSuperview() |
| | | make.height.equalTo(58) |
| | | } |
| | | |
| | | } |
| | | } |
| | |
| | | private(set) var orderId:String! |
| | | private(set) var type:Int! |
| | | |
| | | lazy var adapterViewController:FFAdapterViewController = { |
| | | let adapterViewController = FFAdapterViewController() |
| | | adapterViewController.headHeight = JQ_ScreenW * 0.6 |
| | | adapterViewController.menuHeight = 46 |
| | | adapterViewController.style = .subRefresh |
| | | adapterViewController.ignoreTopSpeace = topSafeHeight |
| | | adapterViewController.headViewController = headerViewController |
| | | adapterViewController.menuViewController = menuViewController |
| | | adapterViewController.pageViewController = pageViewController |
| | | return adapterViewController |
| | | }() |
| | | |
| | | lazy var pageViewController:FFPageViewController = { |
| | | let pageViewController = FFPageViewController() |
| | | pageViewController.delegate = self |
| | | return pageViewController |
| | | }() |
| | | |
| | | lazy var headerViewController:HomeDetailMapVC = { |
| | | let vc = HomeDetailMapVC(orderId: orderId) |
| | | return vc |
| | | }() |
| | | |
| | | lazy var menuViewController:HomeDetailMenuVC = { |
| | | let vc = HomeDetailMenuVC() |
| | | return vc |
| | | }() |
| | | |
| | | weak var adapterVC:FFAdapterViewController? |
| | | var pageViewController:FFPageViewController! |
| | | var headerViewController:HomeDetailMapVC! |
| | | var menuViewController:HomeDetailMenuVC! |
| | | |
| | | required init(orderId:String,type:Int) { |
| | | super.init(nibName: nil, bundle: nil) |
| | |
| | | |
| | | override func viewDidLoad() { |
| | | super.viewDidLoad() |
| | | |
| | | pageViewController = FFPageViewController() |
| | | pageViewController.delegate = self |
| | | |
| | | menuViewController = HomeDetailMenuVC() |
| | | headerViewController = HomeDetailMapVC(orderId: orderId) |
| | | |
| | | let adapterViewController = FFAdapterViewController() |
| | | adapterViewController.headHeight = JQ_ScreenW * 0.6 |
| | | adapterViewController.menuHeight = 46 |
| | | adapterViewController.style = .subRefresh |
| | | adapterViewController.ignoreTopSpeace = topSafeHeight |
| | | adapterViewController.headViewController = headerViewController |
| | | adapterViewController.menuViewController = menuViewController |
| | | adapterViewController.pageViewController = pageViewController |
| | | adapterVC = adapterViewController |
| | | |
| | | addChild(adapterViewController) |
| | | view.insertSubview(adapterViewController.view, at: 0) |
| | | adapterViewController.didMove(toParent: self) |
| | | adapterViewController.view.frame = view.frame |
| | | menuViewController.pageMenu.delegate = self |
| | | menuViewController.pageMenu.bridgeScrollView = pageViewController!.scrollview |
| | | } |
| | | |
| | | override func setUI() { |
| | | super.setUI() |
| | | addChild(adapterViewController) |
| | | view.insertSubview(adapterViewController.view, at: 0) |
| | | adapterViewController.didMove(toParent: self) |
| | | adapterViewController.view.frame = view.frame |
| | | menuViewController.pageMenu.delegate = self |
| | | menuViewController.pageMenu.bridgeScrollView = pageViewController.scrollview |
| | | } |
| | | override func setUI() { |
| | | super.setUI() |
| | | |
| | | } |
| | | |
| | | |
| | | override func setRx() { |
| | | NotificationCenter.default.rx.notification(Shrink_Noti).take(until: self.rx.deallocated).subscribe(onNext: {[weak self] noti in |
| | | if let obj = noti.object as? Bool{ |
| | | let headHei = obj ? JQ_ScreenW * 0.6 : JQ_ScreenH |
| | | self?.adapterViewController.headHeight = headHei |
| | | self?.adapterViewController.updateHeight(withAnimation: true) |
| | | self?.adapterVC?.headHeight = headHei |
| | | self?.adapterVC?.updateHeight(withAnimation: true) |
| | | } |
| | | }).disposed(by: disposeBag) |
| | | } |
| | |
| | | func pageViewController(_ pageViewConteoller: FFPageViewController, controllerForPage page: Int) -> UIViewController { |
| | | if page == 0{ |
| | | let vc = HomeDetailContentVC(orderId: orderId,type: type) |
| | | vc.adapterViewController = adapterViewController |
| | | vc.adapterViewController = adapterVC |
| | | return vc |
| | | }else if page == 1{ |
| | | let vc = HomeDetailAttachVC(orderId: orderId) |
| | | vc.adapterViewController = adapterViewController |
| | | vc.adapterViewController = adapterVC |
| | | return vc |
| | | }else if page == 2{ |
| | | let vc = HomeDetailNoteVC(orderId: orderId) |
| | | vc.adapterViewController = adapterViewController |
| | | vc.adapterViewController = adapterVC |
| | | return vc |
| | | } |
| | | |
| | |
| | | return self.params |
| | | } |
| | | |
| | | func googleRoleMapDone() -> Parameters { |
| | | var paramsArray: [String] = [] |
| | | // 排序 sort |
| | | let sortedArray: [String] = Array(params.keys).sorted() |
| | | for item in sortedArray{ |
| | | // 拼接字符串 Stitch strings |
| | | if params.has(key: item){ |
| | | paramsArray.append("\(item)=\(params[item]!)") |
| | | } |
| | | } |
| | | let content = paramsArray.joined(separator: "&") |
| | | params += ["key": GoogleAppKey] |
| | | return params |
| | | } |
| | | |
| | | class func build(url: String) -> ParamsAppender { |
| | | return ParamsAppender(url: url) |
| | | } |
| | | |
| | | func googleMapDone() -> ParamsAppender { |
| | | func googleMapDone(has:Bool = true) -> ParamsAppender { |
| | | var paramsArray: [String] = [] |
| | | // 排序 |
| | | let sortedArray: [String] = Array(params.keys).sorted() |
| | |
| | | let content = paramsArray.joined(separator: "&") |
| | | params += ["key": GoogleAppKey] |
| | | //https://developers.google.com/maps/faq#languagesupport |
| | | params += ["language":"en"] |
| | | |
| | | if has{ |
| | | params += ["language":"en"] |
| | | } |
| | | |
| | | return self |
| | | } |
| | |
| | | } |
| | | } |
| | | |
| | | // class func requestRoad<T: HandyJSON>(params: ParamsAppender, method: HTTPMethod, encoding: ParameterEncoding? = nil, progress: Bool = true) -> Observable<T>{ |
| | | // return Observable<T>.create{ ob in |
| | | // var hud: MBProgressHUD? |
| | | // if progress { |
| | | // hud = MBProgressHUD.showAdded(to: screnDelegate!.window!, animated: true) |
| | | // hud?.bezelView.style = .solidColor |
| | | // hud?.contentColor = .white |
| | | // hud?.bezelView.backgroundColor = #colorLiteral(red: 0, green: 0, blue: 0, alpha: 0.8) |
| | | // hud?.bezelView.color = #colorLiteral(red: 0, green: 0, blue: 0, alpha: 0.8) |
| | | // hud?.removeFromSuperViewOnHide = true |
| | | // } |
| | | // var newEncoding: ParameterEncoding |
| | | // if encoding != nil { |
| | | // newEncoding = encoding! |
| | | // } else { |
| | | // newEncoding = method == .post ? URLEncoding.httpBody : URLEncoding.queryString |
| | | // } |
| | | // |
| | | // sharedSessionManager.request(params.url.absoluteString, method: method, parameters:params.done(), encoding: newEncoding).validate().responseData{response in |
| | | // LogInfo("请求地址:\(params.url)") |
| | | // LogInfo("请求参数:\(params.params)") |
| | | // hud?.hide(animated: true) |
| | | // if response.error != nil { |
| | | // LogError("\(response.error!)") |
| | | // alert(msg: response.error!.localizedDescription) |
| | | // ob.onError(response.error!) |
| | | // }else if let data = response.data,let jsonString = String(data: data, encoding: String.Encoding.utf8){ |
| | | // if let next = T.deserialize(from: jsonString){ |
| | | // LogInfo("返回数据:\(next.toJSON())") |
| | | // ob.onNext(next) |
| | | // }else{ |
| | | // alert(msg: "数据解析失败") |
| | | // ob.onError(NetRequestError.Other) |
| | | // } |
| | | // }else{ |
| | | // alert(msg: "解析失败") |
| | | // ob.onError(NetRequestError.Other) |
| | | // } |
| | | // ob.onCompleted() |
| | | // } |
| | | // return Disposables.create{} |
| | | // } |
| | | // } |
| | | |
| | | class func requestData(params: ParamsAppender, method: HTTPMethod, encoding: ParameterEncoding? = nil, progress: Bool = true) -> Observable<Data>{ |
| | | return Observable<Data>.create{ ob in |
| | | var hud: MBProgressHUD? |
| | |
| | | import Alamofire |
| | | |
| | | #if DEBUG |
| | | //let All_Url = "http://192.168.110.22:8040" |
| | | let All_Url = "http://54.67.44.33:8040" |
| | | //let All_Url = "http://54.67.44.33:8040" |
| | | let Google_Url = "https://maps.googleapis.com/maps/api" |
| | | let Google_Url_Road = "https://roads.googleapis.com/v1" |
| | | #else |
| | | let All_Url = "http://54.67.44.33:8040" |
| | | let Google_Url = "https://maps.googleapis.com/maps/api" |
| | | let Google_Url_Road = "https://roads.googleapis.com/v1" |
| | | #endif |
| | | |
| | | |
| | |
| | | .append(key: "driverId", value:UserViewModel.getUserInfo()!.id) |
| | | .append(key: "lat", value: "\(coordinate.latitude)") |
| | | .append(key: "lon", value: "\(coordinate.longitude)") |
| | | return NetworkRequest.request(params: params, method: .post, progress: true) |
| | | return NetworkRequest.request(params: params, method: .get, progress: false) |
| | | } |
| | | |
| | | } |
| | |
| | | .append(key: "destination", value: destination.toFormat()) |
| | | .append(key: "waypoints", value: waypoints) |
| | | .append(key: "alternatives", value: false) //可供选择方案:会增加请求时间 |
| | | // .append(key: "optimize", value: true) |
| | | return NetworkRequest.requestMap(params: params.googleMapDone(), method: .get, progress: false) |
| | | } |
| | | |
| | | |
| | | /// When directions line was done , need call the method snap to the road. |
| | | /// - Parameter path: coordiante paths |
| | | class func snapToRoads(path:String)->Observable<BaseResponse<SnappedPointsModel>>{ |
| | | let params = ParamsAppender.build(url: Google_Url) |
| | | class func snapToRoads(path:String)->Observable<SnappedPointsModel>{ |
| | | let params = ParamsAppender.build(url: Google_Url_Road) |
| | | .interface(url: "/snapToRoads/") |
| | | .append(key: "path", value: path) |
| | | .append(key: "interpolate", value: true) |
| | | params.params.removeValue(forKey: "appid") |
| | | params.params.removeValue(forKey: "language") |
| | | return NetworkRequest.request(params: params.googleMapDone(), method: .post, progress: false) |
| | | .append(key: "interpolate", value: "true") |
| | | return NetworkRequest.requestMap(params: params.googleMapDone(has: false), method: .get, progress: false) |
| | | } |
| | | } |