立得地图iOS SDK 地图&搜索服务参考手册 V1.7.0
LMKGeometry.h
浏览该文件的文档.
1 //
2 // LMKGeometry.h
3 // LeadorMapSDK
4 //
5 // Copyright © 2016年 IShowChina. All rights reserved.
6 //
7 
8 #import <CoreGraphics/CoreGraphics.h>
9 #import <CoreLocation/CoreLocation.h>
10 #import <Foundation/Foundation.h>
11 #import <UIKit/UIKit.h>
12 
13 #ifdef __cplusplus
14 extern "C" {
15 #endif
16 
20 typedef NS_ENUM(NSUInteger, LMKMapProjectionType) {
21  LMKMapProjectionTypeMercator,
22  LMKMapProjectionTypeG4326,
23 };
24 
25 
26 #ifndef __LMK_GEOMETRY__H_
27 #define __LMK_GEOMETRY__H_
28 
31 typedef struct {
32  double x;
33  double y;
34 } LMKMapPoint;
38 typedef struct {
39  double width;
40  double height;
41 } LMKMapSize;
45 typedef struct {
48 } LMKMapRect;
52 typedef struct {
53  CLLocationCoordinate2D northEast;
54  CLLocationCoordinate2D southWest;
59 typedef struct {
60  CLLocationDegrees latitudeDelta;
61  CLLocationDegrees longitudeDelta;
66 typedef struct {
67  CLLocationCoordinate2D center;
70 
71 static inline LMKCoordinateBounds LMKCoordinateBoundsMake(CLLocationCoordinate2D northEast, CLLocationCoordinate2D southWest)
72 {
73  return (LMKCoordinateBounds){ northEast, southWest };
74 }
75 
76 static inline LMKCoordinateSpan LMKCoordinateSpanMake(CLLocationDegrees latitudeDelta, CLLocationDegrees longitudeDelta)
77 {
78  return (LMKCoordinateSpan){ latitudeDelta, longitudeDelta };
79 }
80 
81 static inline LMKCoordinateRegion LMKCoordinateRegionMake(CLLocationCoordinate2D centerCoordinate, LMKCoordinateSpan span)
82 {
83  return (LMKCoordinateRegion){ centerCoordinate, span };
84 }
85 
89 extern const LMKMapSize LMKMapSizeWorld;
90 
91 extern const LMKMapRect LMKMapRectWorld;
92 
93 extern const LMKMapRect LMKMapRectZero;
94 
101 extern LMKMapPoint LMKMapPointForCoordinate(CLLocationCoordinate2D coordinate, LMKMapProjectionType projectionType);
102 
109 extern CLLocationCoordinate2D LMKCoordinateForMapPoint(LMKMapPoint mapPoint, LMKMapProjectionType projectionType);
110 
117 extern CLLocationCoordinate2D* LMKCoordinatesForCoordinateString(NSString* coornaditeStr, NSUInteger* count);
118 
125 extern int* LMKCoordinatePointsForCoordinateString(NSString* coornaditeStr, int* count);
126 
132 extern LMKMapRect mapRectForMapPoints(NSArray* pointArray);
133 
137 extern LMKMapRect LMKMapRectUnion(LMKMapRect rect1, LMKMapRect rect2);
138 
139 static inline LMKMapPoint LMKMapPointMake(double x, double y)
140 {
141  return (LMKMapPoint){ x, y };
142 }
143 
144 static inline LMKMapSize LMKMapSizeMake(double width, double height)
145 {
146  return (LMKMapSize){ width, height };
147 }
148 
149 static inline LMKMapRect LMKMapRectMake(double x, double y, double width, double height)
150 {
151  return (LMKMapRect){ LMKMapPointMake(x, y), LMKMapSizeMake(width, height) };
152 }
153 
155 {
156  return (LMKMapPoint){ mapRect.origin.x + mapRect.size.width / 2, mapRect.origin.y + mapRect.size.height / 2 };
157 }
158 
159 static inline double LMKMapRectGetMinX(LMKMapRect rect)
160 {
161  return rect.origin.x;
162 }
163 
164 static inline double LMKMapRectGetMinY(LMKMapRect rect)
165 {
166  return rect.origin.y;
167 }
168 
169 static inline double LMKMapRectGetMidX(LMKMapRect rect)
170 {
171  return rect.origin.x + rect.size.width / 2.0;
172 }
173 
174 static inline double LMKMapRectGetMidY(LMKMapRect rect)
175 {
176  return rect.origin.y + rect.size.height / 2.0;
177 }
178 
179 static inline double LMKMapRectGetMaxX(LMKMapRect rect)
180 {
181  return rect.origin.x + rect.size.width;
182 }
183 
184 static inline double LMKMapRectGetMaxY(LMKMapRect rect)
185 {
186  return rect.origin.y + rect.size.height;
187 }
188 
189 static inline double LMKMapRectGetWidth(LMKMapRect rect)
190 {
191  return rect.size.width;
192 }
193 
194 static inline double LMKMapRectGetHeight(LMKMapRect rect)
195 {
196  return rect.size.height;
197 }
198 
199 extern BOOL LMKMapRectIntersectsRect(LMKMapRect rect1, LMKMapRect rect2);
200 
208 extern double LMKMapPointsPerMeterAtLatitude(CLLocationDegrees latitude, LMKMapProjectionType projectionType);
209 
217 extern CLLocationDistance LMKMetersBetweenLocations(CLLocationCoordinate2D coord1, CLLocationCoordinate2D coord2);
218 
219 #endif
220 
221 #ifdef __cplusplus
222 }
223 #endif
typedef NS_ENUM(NSUInteger, LMKMapProjectionType)
地图投影类型,支持墨卡托投影和4326投影
Definition: LMKGeometry.h:20
经纬度区域
Definition: LMKGeometry.h:66
static LMKMapPoint LMKMapPointMake(double x, double y)
Definition: LMKGeometry.h:139
LMKMapRect LMKMapRectUnion(LMKMapRect rect1, LMKMapRect rect2)
合并两个LMKMapRect
static double LMKMapRectGetHeight(LMKMapRect rect)
Definition: LMKGeometry.h:194
double height
Definition: LMKGeometry.h:40
int * LMKCoordinatePointsForCoordinateString(NSString *coornaditeStr, int *count)
字符串坐标转经纬度点坐标
地图投影点,用平面直角坐标表示(20级像素坐标)。
Definition: LMKGeometry.h:31
double width
Definition: LMKGeometry.h:39
CLLocationCoordinate2D LMKCoordinateForMapPoint(LMKMapPoint mapPoint, LMKMapProjectionType projectionType)
平面投影坐标转经纬度坐标
double x
Definition: LMKGeometry.h:32
BOOL LMKMapRectIntersectsRect(LMKMapRect rect1, LMKMapRect rect2)
LMKMapPoint origin
Definition: LMKGeometry.h:46
static double LMKMapRectGetMidY(LMKMapRect rect)
Definition: LMKGeometry.h:174
static double LMKMapRectGetMinX(LMKMapRect rect)
Definition: LMKGeometry.h:159
CLLocationDegrees latitudeDelta
Definition: LMKGeometry.h:60
double LMKMapPointsPerMeterAtLatitude(CLLocationDegrees latitude, LMKMapProjectionType projectionType)
1米对应的投影
CLLocationCoordinate2D center
Definition: LMKGeometry.h:67
LMKMapSize size
Definition: LMKGeometry.h:47
static double LMKMapRectGetWidth(LMKMapRect rect)
Definition: LMKGeometry.h:189
static double LMKMapRectGetMaxY(LMKMapRect rect)
Definition: LMKGeometry.h:184
static LMKCoordinateSpan LMKCoordinateSpanMake(CLLocationDegrees latitudeDelta, CLLocationDegrees longitudeDelta)
Definition: LMKGeometry.h:76
CLLocationCoordinate2D southWest
Definition: LMKGeometry.h:54
static double LMKMapRectGetMidX(LMKMapRect rect)
Definition: LMKGeometry.h:169
CLLocationDistance LMKMetersBetweenLocations(CLLocationCoordinate2D coord1, CLLocationCoordinate2D coord2)
经纬度两点之间的距离
const LMKMapSize LMKMapSizeWorld
CLLocationCoordinate2D northEast
Definition: LMKGeometry.h:53
const LMKMapRect LMKMapRectWorld
static double LMKMapRectGetMinY(LMKMapRect rect)
Definition: LMKGeometry.h:164
LMKCoordinateSpan span
Definition: LMKGeometry.h:68
经纬度范围
Definition: LMKGeometry.h:52
static LMKMapRect LMKMapRectMake(double x, double y, double width, double height)
Definition: LMKGeometry.h:149
LMKMapRect mapRectForMapPoints(NSArray *pointArray)
平面投影点集合所属的平面范围
double y
Definition: LMKGeometry.h:33
表示一个经纬度跨度
Definition: LMKGeometry.h:59
CLLocationDegrees longitudeDelta
Definition: LMKGeometry.h:61
const LMKMapRect LMKMapRectZero
static LMKCoordinateRegion LMKCoordinateRegionMake(CLLocationCoordinate2D centerCoordinate, LMKCoordinateSpan span)
Definition: LMKGeometry.h:81
LMKMapPoint LMKMapPointForCoordinate(CLLocationCoordinate2D coordinate, LMKMapProjectionType projectionType)
经纬度坐标转平面投影坐标
static LMKMapPoint LMKGetMapRectCenter(LMKMapRect mapRect)
Definition: LMKGeometry.h:154
平面投影大小结构定义
Definition: LMKGeometry.h:38
static double LMKMapRectGetMaxX(LMKMapRect rect)
Definition: LMKGeometry.h:179
CLLocationCoordinate2D * LMKCoordinatesForCoordinateString(NSString *coornaditeStr, NSUInteger *count)
字符串坐标转经纬度坐标
static LMKCoordinateBounds LMKCoordinateBoundsMake(CLLocationCoordinate2D northEast, CLLocationCoordinate2D southWest)
Definition: LMKGeometry.h:71
static LMKMapSize LMKMapSizeMake(double width, double height)
Definition: LMKGeometry.h:144
平面投影矩形结构定义
Definition: LMKGeometry.h:45