Commit 35e4467f authored by lujunye's avatar lujunye

sadl;fjasfldjsal;dfj;aslkjdf

parent 013825c6
...@@ -96,7 +96,6 @@ ...@@ -96,7 +96,6 @@
E030DF372485DD3E002764D3 /* NewRKCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = E030DF352485DD3E002764D3 /* NewRKCell.xib */; }; E030DF372485DD3E002764D3 /* NewRKCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = E030DF352485DD3E002764D3 /* NewRKCell.xib */; };
E030DF3B248651A5002764D3 /* NewRKVc.swift in Sources */ = {isa = PBXBuildFile; fileRef = E030DF39248651A5002764D3 /* NewRKVc.swift */; }; E030DF3B248651A5002764D3 /* NewRKVc.swift in Sources */ = {isa = PBXBuildFile; fileRef = E030DF39248651A5002764D3 /* NewRKVc.swift */; };
E030DF3C248651A5002764D3 /* NewRKVc.xib in Resources */ = {isa = PBXBuildFile; fileRef = E030DF3A248651A5002764D3 /* NewRKVc.xib */; }; E030DF3C248651A5002764D3 /* NewRKVc.xib in Resources */ = {isa = PBXBuildFile; fileRef = E030DF3A248651A5002764D3 /* NewRKVc.xib */; };
E031ED4A24DBF8400042B47B /* BLCoordinatesChangeHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = E031ED4924DBF8400042B47B /* BLCoordinatesChangeHelper.m */; };
E0329EA424D808B1000D547E /* PayPassView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0329EA324D808B1000D547E /* PayPassView.swift */; }; E0329EA424D808B1000D547E /* PayPassView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0329EA324D808B1000D547E /* PayPassView.swift */; };
E0336DD5244EC40000380BE9 /* CreatNewSpecsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0336DD3244EC40000380BE9 /* CreatNewSpecsViewController.swift */; }; E0336DD5244EC40000380BE9 /* CreatNewSpecsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0336DD3244EC40000380BE9 /* CreatNewSpecsViewController.swift */; };
E0336DD6244EC40000380BE9 /* CreatNewSpecsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = E0336DD4244EC40000380BE9 /* CreatNewSpecsViewController.xib */; }; E0336DD6244EC40000380BE9 /* CreatNewSpecsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = E0336DD4244EC40000380BE9 /* CreatNewSpecsViewController.xib */; };
...@@ -724,8 +723,6 @@ ...@@ -724,8 +723,6 @@
E030DF352485DD3E002764D3 /* NewRKCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = NewRKCell.xib; sourceTree = "<group>"; }; E030DF352485DD3E002764D3 /* NewRKCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = NewRKCell.xib; sourceTree = "<group>"; };
E030DF39248651A5002764D3 /* NewRKVc.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NewRKVc.swift; sourceTree = "<group>"; }; E030DF39248651A5002764D3 /* NewRKVc.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NewRKVc.swift; sourceTree = "<group>"; };
E030DF3A248651A5002764D3 /* NewRKVc.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = NewRKVc.xib; sourceTree = "<group>"; }; E030DF3A248651A5002764D3 /* NewRKVc.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = NewRKVc.xib; sourceTree = "<group>"; };
E031ED4824DBF8400042B47B /* BLCoordinatesChangeHelper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BLCoordinatesChangeHelper.h; sourceTree = "<group>"; };
E031ED4924DBF8400042B47B /* BLCoordinatesChangeHelper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BLCoordinatesChangeHelper.m; sourceTree = "<group>"; };
E0329EA324D808B1000D547E /* PayPassView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PayPassView.swift; sourceTree = "<group>"; }; E0329EA324D808B1000D547E /* PayPassView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PayPassView.swift; sourceTree = "<group>"; };
E0336DD3244EC40000380BE9 /* CreatNewSpecsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CreatNewSpecsViewController.swift; sourceTree = "<group>"; }; E0336DD3244EC40000380BE9 /* CreatNewSpecsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CreatNewSpecsViewController.swift; sourceTree = "<group>"; };
E0336DD4244EC40000380BE9 /* CreatNewSpecsViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = CreatNewSpecsViewController.xib; sourceTree = "<group>"; }; E0336DD4244EC40000380BE9 /* CreatNewSpecsViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = CreatNewSpecsViewController.xib; sourceTree = "<group>"; };
...@@ -1826,8 +1823,6 @@ ...@@ -1826,8 +1823,6 @@
E088CC882446FFA1000DAA8A /* Other */ = { E088CC882446FFA1000DAA8A /* Other */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
E031ED4824DBF8400042B47B /* BLCoordinatesChangeHelper.h */,
E031ED4924DBF8400042B47B /* BLCoordinatesChangeHelper.m */,
E09B3AB624B2FCAF00E3B238 /* SDK */, E09B3AB624B2FCAF00E3B238 /* SDK */,
F93E31FE2473C9C200524DFC /* JPush */, F93E31FE2473C9C200524DFC /* JPush */,
F956D560246A2D9C003FF510 /* LMNote */, F956D560246A2D9C003FF510 /* LMNote */,
...@@ -3572,7 +3567,6 @@ ...@@ -3572,7 +3567,6 @@
E0337EED2464EED000952EF4 /* PinPaiListViewController.swift in Sources */, E0337EED2464EED000952EF4 /* PinPaiListViewController.swift in Sources */,
E0BE8A9C245A9E5900E80134 /* YingFuZhangKuanXQCell.swift in Sources */, E0BE8A9C245A9E5900E80134 /* YingFuZhangKuanXQCell.swift in Sources */,
F956D59D246A2D9C003FF510 /* LMNTextStorage.m in Sources */, F956D59D246A2D9C003FF510 /* LMNTextStorage.m in Sources */,
E031ED4A24DBF8400042B47B /* BLCoordinatesChangeHelper.m in Sources */,
E02C882A2456B4BA00925766 /* WLGZCell.swift in Sources */, E02C882A2456B4BA00925766 /* WLGZCell.swift in Sources */,
F950FDE824518CD800C40530 /* TimeSelectView.swift in Sources */, F950FDE824518CD800C40530 /* TimeSelectView.swift in Sources */,
F933F6C72452C68B00189561 /* PKHUDWideBaseView.swift in Sources */, F933F6C72452C68B00189561 /* PKHUDWideBaseView.swift in Sources */,
......
...@@ -24,6 +24,6 @@ ...@@ -24,6 +24,6 @@
#import "WXApi.h" #import "WXApi.h"
#import "BLCoordinatesChangeHelper.h" #import "JZLocationConverter.h"
#endif /* Bridge_Header_h */ #endif /* Bridge_Header_h */
...@@ -763,7 +763,7 @@ class orderDetailItemAddrInfoArrDataModel: Mappable { //订单地址信息 ...@@ -763,7 +763,7 @@ class orderDetailItemAddrInfoArrDataModel: Mappable { //订单地址信息
class poiDataModel: Mappable { class poiDataModel: Mappable {
var district: String? var district: String?
var location: String? var location: String?
var city_id: Int? var city_id: String?
var city: String? var city: String?
var address:String? var address:String?
var wgs84_location: String? var wgs84_location: String?
......
//
// coordinatesChangeHelper.h
//
// Created by 冰泪 on 2017/4/10.
// Copyright © 2017年 冰泪. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <MapKit/MapKit.h>
//#import "coordinatesChange.h"
@interface BLCoordinatesChangeHelper : NSObject
@property (nonatomic,assign) float x_PI;
@property (nonatomic,assign) float PI;
@property (nonatomic,assign) float a;
@property (nonatomic,assign) float ee;
+ (instancetype)shared;
/**
* 百度坐标系 (BD-09) 与 火星坐标系 (GCJ-02)的转换
* 即 百度 转 谷歌、高德
*/
- (CLLocationCoordinate2D)bl_bd09togcj02:(double) lng andLat:(double) lat ;
/**
* 火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换
* 即谷歌、高德 转 百度
*/
- (CLLocationCoordinate2D)bl_gcj02tobd09:(double)lng andLat:(double) lat ;
/**
* WGS84转GCj02
*/
- (CLLocationCoordinate2D)bl_wgs84togcj02:(double)lng andLat:(double) lat;
/**
* GCJ02 转换为 WGS84
*/
- (CLLocationCoordinate2D)bl_gcj02towgs84:(double)lng andLat:(double)lat ;
@end
//
// coordinatesChangeHelper.m
//
// Created by 冰泪 on 2017/4/10.
// Copyright © 2017年 冰泪. All rights reserved.
//
#import "BLCoordinatesChangeHelper.h"
@implementation BLCoordinatesChangeHelper
/**
* 百度坐标系 (BD-09) 与 火星坐标系 (GCJ-02)的转换
* 即 百度 转 谷歌、高德
*/
- (CLLocationCoordinate2D)bl_bd09togcj02:(double) lng andLat:(double) lat {
double x_pi = 3.14159265358979324 * 3000.0 / 180.0;
double x = lng - 0.0065;
double y = lat - 0.006;
double z = sqrt(x * x + y * y) - 0.00002 * sin(y * x_pi);
double theta = atan2(y, x) - 0.000003 * cos(x * x_pi);
double bl_lng = z * cos(theta);
double bl_lat = z * sin(theta);
CLLocationCoordinate2D coor;
coor.longitude = bl_lng;
coor.latitude = bl_lat;
return coor;
}
/**
* 火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换
* 即谷歌、高德 转 百度
*/
- (CLLocationCoordinate2D)bl_gcj02tobd09:(double)lng andLat:(double) lat {
double z = sqrt(lng * lng + lat * lat) + 0.00002 * sin(lat * _x_PI);
double theta = atan2(lat, lng) + 0.000003 * cos(lng * _x_PI);
double bl_lng = z * cos(theta) + 0.0065;
double bl_lat = z * sin(theta) + 0.006;
CLLocationCoordinate2D coor;
coor.longitude = bl_lng;
coor.latitude = bl_lat;
return coor;
}
/**
* WGS84转GCj02
*/
- (CLLocationCoordinate2D)bl_wgs84togcj02:(double)lng andLat:(double) lat {
if ([self out_of_china:lng andLat:lat ]) {
CLLocationCoordinate2D coor;
coor.longitude = lng;
coor.latitude = lat;
return coor;
}else {
double dlat = [self transformlat:lng - 105.0 andLat:lat - 35.0];
double dlng = [self transformlng:lng - 105.0 andLat:lat - 35.0];
double radlat = lat / 180.0 * _PI;
double magic = sin(radlat);
magic = 1 - _ee * magic * magic;
double sqrtmagic = sqrt(magic);
dlat = (dlat * 180.0) / ((_a * (1 - _ee)) / (magic * sqrtmagic) * _PI);
dlng = (dlng * 180.0) / (_a / sqrtmagic * cos(radlat) * _PI);
double bl_lat = lat + dlat;
double bl_lng = lng + dlng;
CLLocationCoordinate2D coor;
coor.longitude = bl_lng;
coor.latitude = bl_lat;
return coor;
}
}
/**
* GCJ02 转换为 WGS84
*/
- (CLLocationCoordinate2D)bl_gcj02towgs84:(double)lng andLat:(double)lat {
if ([self out_of_china:lng andLat:lat ]) {
CLLocationCoordinate2D coor;
coor.longitude = lng;
coor.latitude = lat;
return coor;
}
else {
double dlat = [self transformlat:lng - 105.0 andLat:lat - 35.0];
double dlng = [self transformlng:lng - 105.0 andLat:lat - 35.0];
double radlat = lat / 180.0 * _PI;
double magic = sin(radlat);
magic = 1 - _ee * magic * magic;
double sqrtmagic = sqrt(magic);
dlat = (dlat * 180.0) / ((_a * (1 - _ee)) / (magic * sqrtmagic) * _PI);
dlng = (dlng * 180.0) / (_a / sqrtmagic * cos(radlat) * _PI);
double bl_lat = lat + dlat;
double bl_lng = lng + dlng;
CLLocationCoordinate2D coor;
coor.longitude = bl_lng;
coor.latitude = bl_lat;
return coor;
}
}
- (double)transformlat:(double)lng andLat:(double)lat {
double ret = -100.0 + 2.0 * lng + 3.0 * lat + 0.2 * lat * lat + 0.1 * lng * lat + 0.2 * sqrt(fabs(lng));
ret += (20.0 * sin(6.0 * lng * _PI) + 20.0 * sin(2.0 * lng * _PI)) * 2.0 / 3.0;
ret += (20.0 * sin(lat * _PI) + 40.0 * sin(lat / 3.0 * _PI)) * 2.0 / 3.0;
ret += (160.0 * sin(lat / 12.0 * _PI) + 320 * sin(lat * _PI / 30.0)) * 2.0 / 3.0;
return ret;
}
- (double)transformlng:(double)lng andLat:(double)lat{
double ret = 300.0 + lng + 2.0 * lat + 0.1 * lng * lng + 0.1 * lng * lat + 0.1 * sqrt(fabs(lng));
ret += (20.0 * sin(6.0 * lng * _PI) + 20.0 * sin(2.0 * lng * _PI)) * 2.0 / 3.0;
ret += (20.0 * sin(lng * _PI) + 40.0 * sin(lng / 3.0 * _PI)) * 2.0 / 3.0;
ret += (150.0 * sin(lng / 12.0 * _PI) + 300.0 * sin(lng / 30.0 * _PI)) * 2.0 / 3.0;
return ret;
}
/**
* 判断是否在国内,不在国内则不做偏移
*/
- (BOOL)out_of_china:(double)lng andLat:(double)lat {
return (lng < 72.004 || lng > 137.8347) || ((lat < 0.8293 || lat > 55.8271) || false);
}
-(instancetype)init{
_x_PI = 3.14159265358979324 * 3000.0 / 180.0;
_PI = 3.1415926535897932384626;
_a = 6378245.0;
_ee = 0.00669342162296594323;
return self;
}
+ (instancetype)shared {
static BLCoordinatesChangeHelper *manager = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
manager = [[BLCoordinatesChangeHelper alloc] init];
});
return manager;
}
@end
...@@ -261,18 +261,14 @@ class XiaYunDanViewController: BaseViewController,UITableViewDelegate,UITableVie ...@@ -261,18 +261,14 @@ class XiaYunDanViewController: BaseViewController,UITableViewDelegate,UITableVie
adrDs.removeAll() adrDs.removeAll()
for item in adrArr { for item in adrArr {
let data = item["adr"] as! cityListDataModel let data = item["adr"] as! cityListDataModel
let dict = ["lat":data.lat_lon!.lat!,"lon":data.lat_lon!.lon!,"city_id":data.city_id!] as [String : Any] let dict = ["lat":data.lat_lon!.lat!,"lon":data.lat_lon!.lon!,"city_id":data.city_id!] as [String : Any]
adrDs.append(dict) adrDs.append(dict)
} }
let lat_lon_arr = dataChangeString(sender: adrDs) let lat_lon_arr = dataChangeString(sender: adrDs)
// var std_tag_arr = ""
// if isSpecCar {
// std_tag_arr = "带尾板"
// }
let fD = adrArr.first! let fD = adrArr.first!
let cityData = fD["adr"] as! cityListDataModel let cityData = fD["adr"] as! cityListDataModel
let params = ["user_token":UserToken as Any, let params = ["user_token":UserToken as Any,
...@@ -357,6 +353,7 @@ class XiaYunDanViewController: BaseViewController,UITableViewDelegate,UITableVie ...@@ -357,6 +353,7 @@ class XiaYunDanViewController: BaseViewController,UITableViewDelegate,UITableVie
let adrModel = dict["adr"] as! cityListDataModel let adrModel = dict["adr"] as! cityListDataModel
if idx == 0 { if idx == 0 {
if city_id != adrModel.city_id { if city_id != adrModel.city_id {
city_id = adrModel.city_id! city_id = adrModel.city_id!
selectCarType = 0 selectCarType = 0
...@@ -369,6 +366,7 @@ class XiaYunDanViewController: BaseViewController,UITableViewDelegate,UITableVie ...@@ -369,6 +366,7 @@ class XiaYunDanViewController: BaseViewController,UITableViewDelegate,UITableVie
} }
} }
if idx != 0 && adrArr.count == 0{ if idx != 0 && adrArr.count == 0{
let dic = NSMutableDictionary() let dic = NSMutableDictionary()
dic["locName"] = "空" dic["locName"] = "空"
...@@ -394,6 +392,7 @@ class XiaYunDanViewController: BaseViewController,UITableViewDelegate,UITableVie ...@@ -394,6 +392,7 @@ class XiaYunDanViewController: BaseViewController,UITableViewDelegate,UITableVie
for item in adrArr { for item in adrArr {
let data = item["adr"] as! cityListDataModel let data = item["adr"] as! cityListDataModel
let dict = ["lat":data.lat_lon!.lat!,"lon":data.lat_lon!.lon!,"city_id":data.city_id!] as [String : Any] let dict = ["lat":data.lat_lon!.lat!,"lon":data.lat_lon!.lon!,"city_id":data.city_id!] as [String : Any]
adrDs.append(dict) adrDs.append(dict)
} }
let lat_lon_arr = dataChangeString(sender: adrDs) let lat_lon_arr = dataChangeString(sender: adrDs)
...@@ -1195,7 +1194,7 @@ class XiaYunDanViewController: BaseViewController,UITableViewDelegate,UITableVie ...@@ -1195,7 +1194,7 @@ class XiaYunDanViewController: BaseViewController,UITableViewDelegate,UITableVie
} }
let vc = ToAndFormSelectViewController() let vc = ToAndFormSelectViewController()
vc.idx = 10086 vc.idx = 10086
vc.adrDatas = self.adrDatas vc.adrDatasArr = self.adrDatas
vc.delegate = self vc.delegate = self
// if self.loc != nil{ // if self.loc != nil{
// vc.loc = self.loc // vc.loc = self.loc
...@@ -1207,7 +1206,7 @@ class XiaYunDanViewController: BaseViewController,UITableViewDelegate,UITableVie ...@@ -1207,7 +1206,7 @@ class XiaYunDanViewController: BaseViewController,UITableViewDelegate,UITableVie
}else{ }else{
let vc = ToAndFormSelectViewController() let vc = ToAndFormSelectViewController()
vc.idx = 10086 vc.idx = 10086
vc.adrDatas = adrDatas vc.adrDatasArr = adrDatas
vc.delegate = self vc.delegate = self
if adrDatas.count > 0 { if adrDatas.count > 0 {
// vc.loc = loc // vc.loc = loc
...@@ -1361,7 +1360,7 @@ class XiaYunDanViewController: BaseViewController,UITableViewDelegate,UITableVie ...@@ -1361,7 +1360,7 @@ class XiaYunDanViewController: BaseViewController,UITableViewDelegate,UITableVie
} }
let vc = ToAndFormSelectViewController() let vc = ToAndFormSelectViewController()
vc.idx = indexPath.row vc.idx = indexPath.row
vc.adrDatas = self.adrDatas vc.adrDatasArr = self.adrDatas
vc.delegate = self vc.delegate = self
...@@ -1386,7 +1385,7 @@ class XiaYunDanViewController: BaseViewController,UITableViewDelegate,UITableVie ...@@ -1386,7 +1385,7 @@ class XiaYunDanViewController: BaseViewController,UITableViewDelegate,UITableVie
let vc = ToAndFormSelectViewController() let vc = ToAndFormSelectViewController()
vc.idx = indexPath.row vc.idx = indexPath.row
vc.adrDatas = adrDatas vc.adrDatasArr = adrDatas
vc.delegate = self vc.delegate = self
if adrArr.count > indexPath.row { if adrArr.count > indexPath.row {
......
...@@ -39,6 +39,7 @@ class XiaDanUserInfoViewController: BaseViewController , CNContactPickerDelegate ...@@ -39,6 +39,7 @@ class XiaDanUserInfoViewController: BaseViewController , CNContactPickerDelegate
userPhoneTF.text = arr![1] userPhoneTF.text = arr![1]
messageTV.text = arr![2] messageTV.text = arr![2]
} }
messageTV.text = "格利食品"
} }
......
...@@ -65,7 +65,7 @@ class HuoLaLaDiZhiCell: UITableViewCell { ...@@ -65,7 +65,7 @@ class HuoLaLaDiZhiCell: UITableViewCell {
bg.addSubview(btn) bg.addSubview(btn)
} }
//卓悦汇购物中心 //
@objc func abc(sender:UIButton){ @objc func abc(sender:UIButton){
delegate?.HuoLaLaDiZhiCellBtnClick(model: children![sender.tag],cityStr: cityStr) delegate?.HuoLaLaDiZhiCellBtnClick(model: children![sender.tag],cityStr: cityStr)
} }
......
...@@ -29,5 +29,6 @@ pod 'SkeletonView' ...@@ -29,5 +29,6 @@ pod 'SkeletonView'
pod 'SnapKit' pod 'SnapKit'
pod 'LGButton' pod 'LGButton'
pod 'WYAutoLayout' pod 'WYAutoLayout'
pod 'JZLocationConverter'
end end
//
// JZLocationConverter.h
// JZCLLocationMangerDome
//
// Created by jack zhou on 13-8-22.
// Copyright (c) 2013年 JZ. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <CoreLocation/CoreLocation.h>
@interface JZLocationConverter : NSObject
/**
* @brief 世界标准地理坐标(WGS-84) 转换成 中国国测局地理坐标(GCJ-02)<火星坐标>
*
* ####只在中国大陆的范围的坐标有效,以外直接返回世界标准坐标
*
* @param location 世界标准地理坐标(WGS-84)
*
* @return 中国国测局地理坐标(GCJ-02)<火星坐标>
*/
+ (CLLocationCoordinate2D)wgs84ToGcj02:(CLLocationCoordinate2D)location;
/**
* @brief 中国国测局地理坐标(GCJ-02) 转换成 世界标准地理坐标(WGS-84)
*
* ####此接口有1-2米左右的误差,需要精确定位情景慎用
*
* @param location 中国国测局地理坐标(GCJ-02)
*
* @return 世界标准地理坐标(WGS-84)
*/
+ (CLLocationCoordinate2D)gcj02ToWgs84:(CLLocationCoordinate2D)location;
/**
* @brief 世界标准地理坐标(WGS-84) 转换成 百度地理坐标(BD-09)
*
* @param location 世界标准地理坐标(WGS-84)
*
* @return 百度地理坐标(BD-09)
*/
+ (CLLocationCoordinate2D)wgs84ToBd09:(CLLocationCoordinate2D)location;
/**
* @brief 中国国测局地理坐标(GCJ-02)<火星坐标> 转换成 百度地理坐标(BD-09)
*
* @param location 中国国测局地理坐标(GCJ-02)<火星坐标>
*
* @return 百度地理坐标(BD-09)
*/
+ (CLLocationCoordinate2D)gcj02ToBd09:(CLLocationCoordinate2D)location;
/**
* @brief 百度地理坐标(BD-09) 转换成 中国国测局地理坐标(GCJ-02)<火星坐标>
*
* @param location 百度地理坐标(BD-09)
*
* @return 中国国测局地理坐标(GCJ-02)<火星坐标>
*/
+ (CLLocationCoordinate2D)bd09ToGcj02:(CLLocationCoordinate2D)location;
/**
* @brief 百度地理坐标(BD-09) 转换成 世界标准地理坐标(WGS-84)
*
* ####此接口有1-2米左右的误差,需要精确定位情景慎用
*
* @param location 百度地理坐标(BD-09)
*
* @return 世界标准地理坐标(WGS-84)
*/
+ (CLLocationCoordinate2D)bd09ToWgs84:(CLLocationCoordinate2D)location;
@end
//
// JZLocationConverter.m
// JZCLLocationMangerDome
//
// Created by jack zhou on 13-8-22.
// Copyright (c) 2013年 JZ. All rights reserved.
//
#import "JZLocationConverter.h"
#import <CoreLocation/CoreLocation.h>
#define LAT_OFFSET_0(x,y) -100.0 + 2.0 * x + 3.0 * y + 0.2 * y * y + 0.1 * x * y + 0.2 * sqrt(fabs(x))
#define LAT_OFFSET_1 (20.0 * sin(6.0 * x * M_PI) + 20.0 * sin(2.0 * x * M_PI)) * 2.0 / 3.0
#define LAT_OFFSET_2 (20.0 * sin(y * M_PI) + 40.0 * sin(y / 3.0 * M_PI)) * 2.0 / 3.0
#define LAT_OFFSET_3 (160.0 * sin(y / 12.0 * M_PI) + 320 * sin(y * M_PI / 30.0)) * 2.0 / 3.0
#define LON_OFFSET_0(x,y) 300.0 + x + 2.0 * y + 0.1 * x * x + 0.1 * x * y + 0.1 * sqrt(fabs(x))
#define LON_OFFSET_1 (20.0 * sin(6.0 * x * M_PI) + 20.0 * sin(2.0 * x * M_PI)) * 2.0 / 3.0
#define LON_OFFSET_2 (20.0 * sin(x * M_PI) + 40.0 * sin(x / 3.0 * M_PI)) * 2.0 / 3.0
#define LON_OFFSET_3 (150.0 * sin(x / 12.0 * M_PI) + 300.0 * sin(x / 30.0 * M_PI)) * 2.0 / 3.0
#define RANGE_LON_MAX 137.8347
#define RANGE_LON_MIN 72.004
#define RANGE_LAT_MAX 55.8271
#define RANGE_LAT_MIN 0.8293
// jzA = 6378245.0, 1/f = 298.3
// b = a * (1 - f)
// ee = (a^2 - b^2) / a^2;
#define jzA 6378245.0
#define jzEE 0.00669342162296594323
@implementation JZLocationConverter
+ (double)transformLat:(double)x bdLon:(double)y
{
double ret = LAT_OFFSET_0(x, y);
ret += LAT_OFFSET_1;
ret += LAT_OFFSET_2;
ret += LAT_OFFSET_3;
return ret;
}
+ (double)transformLon:(double)x bdLon:(double)y
{
double ret = LON_OFFSET_0(x, y);
ret += LON_OFFSET_1;
ret += LON_OFFSET_2;
ret += LON_OFFSET_3;
return ret;
}
+ (BOOL)outOfChina:(double)lat bdLon:(double)lon
{
if (lon < RANGE_LON_MIN || lon > RANGE_LON_MAX)
return true;
if (lat < RANGE_LAT_MIN || lat > RANGE_LAT_MAX)
return true;
return false;
}
+ (CLLocationCoordinate2D)gcj02Encrypt:(double)ggLat bdLon:(double)ggLon
{
CLLocationCoordinate2D resPoint;
double mgLat;
double mgLon;
if ([self outOfChina:ggLat bdLon:ggLon]) {
resPoint.latitude = ggLat;
resPoint.longitude = ggLon;
return resPoint;
}
double dLat = [self transformLat:(ggLon - 105.0)bdLon:(ggLat - 35.0)];
double dLon = [self transformLon:(ggLon - 105.0) bdLon:(ggLat - 35.0)];
double radLat = ggLat / 180.0 * M_PI;
double magic = sin(radLat);
magic = 1 - jzEE * magic * magic;
double sqrtMagic = sqrt(magic);
dLat = (dLat * 180.0) / ((jzA * (1 - jzEE)) / (magic * sqrtMagic) * M_PI);
dLon = (dLon * 180.0) / (jzA / sqrtMagic * cos(radLat) * M_PI);
mgLat = ggLat + dLat;
mgLon = ggLon + dLon;
resPoint.latitude = mgLat;
resPoint.longitude = mgLon;
return resPoint;
}
+ (CLLocationCoordinate2D)gcj02Decrypt:(double)gjLat gjLon:(double)gjLon {
CLLocationCoordinate2D gPt = [self gcj02Encrypt:gjLat bdLon:gjLon];
double dLon = gPt.longitude - gjLon;
double dLat = gPt.latitude - gjLat;
CLLocationCoordinate2D pt;
pt.latitude = gjLat - dLat;
pt.longitude = gjLon - dLon;
return pt;
}
+ (CLLocationCoordinate2D)bd09Decrypt:(double)bdLat bdLon:(double)bdLon
{
CLLocationCoordinate2D gcjPt;
double x = bdLon - 0.0065, y = bdLat - 0.006;
double z = sqrt(x * x + y * y) - 0.00002 * sin(y * M_PI);
double theta = atan2(y, x) - 0.000003 * cos(x * M_PI);
gcjPt.longitude = z * cos(theta);
gcjPt.latitude = z * sin(theta);
return gcjPt;
}
+(CLLocationCoordinate2D)bd09Encrypt:(double)ggLat bdLon:(double)ggLon
{
CLLocationCoordinate2D bdPt;
double x = ggLon, y = ggLat;
double z = sqrt(x * x + y * y) + 0.00002 * sin(y * M_PI);
double theta = atan2(y, x) + 0.000003 * cos(x * M_PI);
bdPt.longitude = z * cos(theta) + 0.0065;
bdPt.latitude = z * sin(theta) + 0.006;
return bdPt;
}
+ (CLLocationCoordinate2D)wgs84ToGcj02:(CLLocationCoordinate2D)location
{
return [self gcj02Encrypt:location.latitude bdLon:location.longitude];
}
+ (CLLocationCoordinate2D)gcj02ToWgs84:(CLLocationCoordinate2D)location
{
return [self gcj02Decrypt:location.latitude gjLon:location.longitude];
}
+ (CLLocationCoordinate2D)wgs84ToBd09:(CLLocationCoordinate2D)location
{
CLLocationCoordinate2D gcj02Pt = [self gcj02Encrypt:location.latitude
bdLon:location.longitude];
return [self bd09Encrypt:gcj02Pt.latitude bdLon:gcj02Pt.longitude] ;
}
+ (CLLocationCoordinate2D)gcj02ToBd09:(CLLocationCoordinate2D)location
{
return [self bd09Encrypt:location.latitude bdLon:location.longitude];
}
+ (CLLocationCoordinate2D)bd09ToGcj02:(CLLocationCoordinate2D)location
{
return [self bd09Decrypt:location.latitude bdLon:location.longitude];
}
+ (CLLocationCoordinate2D)bd09ToWgs84:(CLLocationCoordinate2D)location
{
CLLocationCoordinate2D gcj02 = [self bd09ToGcj02:location];
return [self gcj02Decrypt:gcj02.latitude gjLon:gcj02.longitude];
}
@end
The MIT License (MIT)
Copyright (c) 2015 Steven
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
JZLocationConverter
===================
### Quick start
JZLocationConverter 支持 [CocoaPods](http://cocoapods.org). 添加下面配置到你的 Podfile:
```ruby
pod 'JZLocationConverter'
```
WGS-84世界标准坐标、GCJ-02中国国测局(火星坐标)、BD-09百度坐标系转换
目前有:
##WGS-84 -> GCJ-02
### 此接口当输入坐标为中国大陆以外时,仍旧返回WGS-84坐标
+ (CLLocationCoordinate2D)wgs84ToGcj02:(CLLocationCoordinate2D)location;
##GCJ-02 -> WGS-84
### 此接口有1-2米左右的误差,需要精确的场景慎用
+ (CLLocationCoordinate2D)gcj02ToWgs84:(CLLocationCoordinate2D)location;
##WGS-84 -> BD-09
+ (CLLocationCoordinate2D)wgs84ToBd09:(CLLocationCoordinate2D)location;
##BD-09 -> WGS-84
+ (CLLocationCoordinate2D)bd09ToWgs84:(CLLocationCoordinate2D)location;
##GCJ-02 -> BD-09
+ (CLLocationCoordinate2D)gcj02ToBd09:(CLLocationCoordinate2D)location;
##BD-09 -> GCJ-02
### 此接口有1-2米左右的误差,需要精确的场景慎用
+ (CLLocationCoordinate2D)bd09ToGcj02:(CLLocationCoordinate2D)location;
This diff is collapsed.
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1100"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForAnalyzing = "YES"
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "E8572772A2B42B68FDF351C752B8A238"
BuildableName = "JZLocationConverter.framework"
BlueprintName = "JZLocationConverter"
ReferencedContainer = "container:Pods.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
buildConfiguration = "Debug">
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
buildConfiguration = "Debug"
allowLocationSimulation = "YES">
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES"
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES">
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
...@@ -34,6 +34,11 @@ ...@@ -34,6 +34,11 @@
<key>isShown</key> <key>isShown</key>
<false/> <false/>
</dict> </dict>
<key>JZLocationConverter.xcscheme</key>
<dict>
<key>isShown</key>
<false/>
</dict>
<key>Kingfisher.xcscheme</key> <key>Kingfisher.xcscheme</key>
<dict> <dict>
<key>isShown</key> <key>isShown</key>
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleIdentifier</key>
<string>${PRODUCT_BUNDLE_IDENTIFIER}</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>${PRODUCT_NAME}</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>1.0.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>${CURRENT_PROJECT_VERSION}</string>
<key>NSPrincipalClass</key>
<string></string>
</dict>
</plist>
#import <Foundation/Foundation.h>
@interface PodsDummy_JZLocationConverter : NSObject
@end
@implementation PodsDummy_JZLocationConverter
@end
#ifdef __OBJC__
#import <UIKit/UIKit.h>
#else
#ifndef FOUNDATION_EXPORT
#if defined(__cplusplus)
#define FOUNDATION_EXPORT extern "C"
#else
#define FOUNDATION_EXPORT extern
#endif
#endif
#endif
#ifdef __OBJC__
#import <UIKit/UIKit.h>
#else
#ifndef FOUNDATION_EXPORT
#if defined(__cplusplus)
#define FOUNDATION_EXPORT extern "C"
#else
#define FOUNDATION_EXPORT extern
#endif
#endif
#endif
#import "JZLocationConverter.h"
FOUNDATION_EXPORT double JZLocationConverterVersionNumber;
FOUNDATION_EXPORT const unsigned char JZLocationConverterVersionString[];
CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/JZLocationConverter
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
PODS_BUILD_DIR = ${BUILD_DIR}
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
PODS_ROOT = ${SRCROOT}
PODS_TARGET_SRCROOT = ${PODS_ROOT}/JZLocationConverter
PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
SKIP_INSTALL = YES
USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
framework module JZLocationConverter {
umbrella header "JZLocationConverter-umbrella.h"
export *
module * { export * }
}
CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/JZLocationConverter
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
PODS_BUILD_DIR = ${BUILD_DIR}
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
PODS_ROOT = ${SRCROOT}
PODS_TARGET_SRCROOT = ${PODS_ROOT}/JZLocationConverter
PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
SKIP_INSTALL = YES
USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
...@@ -139,6 +139,32 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ...@@ -139,6 +139,32 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE. SOFTWARE.
## JZLocationConverter
The MIT License (MIT)
Copyright (c) 2015 Steven
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
## Kingfisher ## Kingfisher
The MIT License (MIT) The MIT License (MIT)
......
...@@ -190,6 +190,38 @@ SOFTWARE. ...@@ -190,6 +190,38 @@ SOFTWARE.
<key>FooterText</key> <key>FooterText</key>
<string>The MIT License (MIT) <string>The MIT License (MIT)
Copyright (c) 2015 Steven
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
</string>
<key>License</key>
<string>MIT</string>
<key>Title</key>
<string>JZLocationConverter</string>
<key>Type</key>
<string>PSGroupSpecifier</string>
</dict>
<dict>
<key>FooterText</key>
<string>The MIT License (MIT)
Copyright (c) 2018 Wei Wang Copyright (c) 2018 Wei Wang
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
......
...@@ -203,6 +203,7 @@ if [[ "$CONFIGURATION" == "Debug" ]]; then ...@@ -203,6 +203,7 @@ if [[ "$CONFIGURATION" == "Debug" ]]; then
install_framework "${BUILT_PRODUCTS_DIR}/ESTabBarController-swift/ESTabBarController_swift.framework" install_framework "${BUILT_PRODUCTS_DIR}/ESTabBarController-swift/ESTabBarController_swift.framework"
install_framework "${BUILT_PRODUCTS_DIR}/Hue/Hue.framework" install_framework "${BUILT_PRODUCTS_DIR}/Hue/Hue.framework"
install_framework "${BUILT_PRODUCTS_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework" install_framework "${BUILT_PRODUCTS_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework"
install_framework "${BUILT_PRODUCTS_DIR}/JZLocationConverter/JZLocationConverter.framework"
install_framework "${BUILT_PRODUCTS_DIR}/Kingfisher/Kingfisher.framework" install_framework "${BUILT_PRODUCTS_DIR}/Kingfisher/Kingfisher.framework"
install_framework "${BUILT_PRODUCTS_DIR}/LGButton/LGButton.framework" install_framework "${BUILT_PRODUCTS_DIR}/LGButton/LGButton.framework"
install_framework "${BUILT_PRODUCTS_DIR}/MJRefresh/MJRefresh.framework" install_framework "${BUILT_PRODUCTS_DIR}/MJRefresh/MJRefresh.framework"
...@@ -223,6 +224,7 @@ if [[ "$CONFIGURATION" == "Release" ]]; then ...@@ -223,6 +224,7 @@ if [[ "$CONFIGURATION" == "Release" ]]; then
install_framework "${BUILT_PRODUCTS_DIR}/ESTabBarController-swift/ESTabBarController_swift.framework" install_framework "${BUILT_PRODUCTS_DIR}/ESTabBarController-swift/ESTabBarController_swift.framework"
install_framework "${BUILT_PRODUCTS_DIR}/Hue/Hue.framework" install_framework "${BUILT_PRODUCTS_DIR}/Hue/Hue.framework"
install_framework "${BUILT_PRODUCTS_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework" install_framework "${BUILT_PRODUCTS_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework"
install_framework "${BUILT_PRODUCTS_DIR}/JZLocationConverter/JZLocationConverter.framework"
install_framework "${BUILT_PRODUCTS_DIR}/Kingfisher/Kingfisher.framework" install_framework "${BUILT_PRODUCTS_DIR}/Kingfisher/Kingfisher.framework"
install_framework "${BUILT_PRODUCTS_DIR}/LGButton/LGButton.framework" install_framework "${BUILT_PRODUCTS_DIR}/LGButton/LGButton.framework"
install_framework "${BUILT_PRODUCTS_DIR}/MJRefresh/MJRefresh.framework" install_framework "${BUILT_PRODUCTS_DIR}/MJRefresh/MJRefresh.framework"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment