TencentMapSDK_iOS_3D_v4.3.4
QGeometry.h
1 //
2 // QGeometry.h
3 // QMapKit
4 //
5 // Created by tabsong on 17/5/16.
6 // Copyright © 2017年 tencent. All rights reserved.
7 //
8 
9 #import <UIKit/UIKit.h>
10 #import <CoreLocation/CoreLocation.h>
11 
12 #ifdef __cplusplus
13 extern "C" {
14 #endif
15 
21  typedef struct
22  {
23  CLLocationDegrees latitudeDelta;
24  CLLocationDegrees longitudeDelta;
26 
30  typedef struct
31  {
32  CLLocationCoordinate2D center;
33  QCoordinateSpan span;
35 
44  static inline QCoordinateSpan QCoordinateSpanMake(CLLocationDegrees latitudeDelta, CLLocationDegrees longitudeDelta)
45  {
46  return (QCoordinateSpan){latitudeDelta, longitudeDelta};
47  }
48 
57  static inline QCoordinateRegion QCoordinateRegionMake(CLLocationCoordinate2D centerCoordinate, QCoordinateSpan span)
58  {
59  return (QCoordinateRegion){centerCoordinate, span};
60  }
61 
62 
66  typedef struct
67  {
68  double x;
69  double y;
70  } QMapPoint;
71 
75  typedef struct
76  {
77  double width;
78  double height;
79  } QMapSize;
80 
84  typedef struct
85  {
86  QMapPoint origin;
87  QMapSize size;
88  } QMapRect;
89 
93  extern const QMapRect QMapRectNull;
94 
103  static inline QMapPoint QMapPointMake(double x, double y)
104  {
105  return (QMapPoint){x, y};
106  }
107 
116  static inline QMapSize QMapSizeMake(double width, double height)
117  {
118  return (QMapSize){width, height};
119  }
120 
131  static inline QMapRect QMapRectMake(double x, double y, double width, double height)
132  {
133  return (QMapRect){QMapPointMake(x, y), QMapSizeMake(width, height)};
134  }
135 
143  static inline double QMapRectGetMinX(QMapRect rect)
144  {
145  return rect.origin.x;
146  }
147 
155  static inline double QMapRectGetMinY(QMapRect rect)
156  {
157  return rect.origin.y;
158  }
159 
167  static inline double QMapRectGetMidX(QMapRect rect)
168  {
169  return rect.origin.x + rect.size.width / 2.0;
170  }
171 
179  static inline double QMapRectGetMidY(QMapRect rect)
180  {
181  return rect.origin.y + rect.size.height / 2.0;
182  }
183 
191  static inline double QMapRectGetMaxX(QMapRect rect)
192  {
193  return rect.origin.x + rect.size.width;
194  }
195 
203  static inline double QMapRectGetMaxY(QMapRect rect)
204  {
205  return rect.origin.y + rect.size.height;
206  }
207 
215  static inline double QMapRectGetWidth(QMapRect rect)
216  {
217  return rect.size.width;
218  }
219 
227  static inline double QMapRectGetHeight(QMapRect rect)
228  {
229  return rect.size.height;
230  }
231 
240  static inline BOOL QMapPointEqualToPoint(QMapPoint point1, QMapPoint point2)
241  {
242  return point1.x == point2.x && point1.y == point2.y;
243  }
244 
253  static inline BOOL QMapSizeEqualToSize(QMapSize size1, QMapSize size2)
254  {
255  return size1.width == size2.width && size1.height == size2.height;
256  }
257 
266  static inline BOOL QMapRectEqualToRect(QMapRect rect1, QMapRect rect2)
267  {
268  return
269  QMapPointEqualToPoint(rect1.origin, rect2.origin) &&
270  QMapSizeEqualToSize(rect1.size, rect2.size);
271  }
272 
280  static inline BOOL QMapRectIsNull(QMapRect rect)
281  {
282  return QMapPointEqualToPoint(rect.origin, QMapRectNull.origin);
283  }
284 
292  static inline BOOL QMapRectIsEmpty(QMapRect rect)
293  {
294  return QMapRectIsNull(rect) || (rect.size.width == 0.0 && rect.size.height == 0.0);
295  }
296 
305  extern BOOL QMapRectContainsPoint(QMapRect rect, QMapPoint point);
306 
315  extern QMapRect QMapRectUnionPoint(QMapRect rect, QMapPoint point);
316 
325  extern QMapRect QMapRectUnion(QMapRect rect1, QMapRect rect2);
326 
335  extern BOOL QMapRectIntersectsRect(QMapRect rect1, QMapRect rect2);
336 
345  extern BOOL QMapRectContainsRect(QMapRect rect1, QMapRect rect2);
346 
354  static inline NSString *QStringFromMapPoint(QMapPoint point)
355  {
356  return [NSString stringWithFormat:@"{%.1f, %.1f}", point.x, point.y];
357  }
358 
366  static inline NSString *QStringFromMapSize(QMapSize size)
367  {
368  return [NSString stringWithFormat:@"{%.1f, %.1f}", size.width, size.height];
369  }
370 
378  static inline NSString *QStringFromMapRect(QMapRect rect)
379  {
380  return [NSString stringWithFormat:@"{%@, %@}", QStringFromMapPoint(rect.origin), QStringFromMapSize(rect.size)];
381  }
382 
383 
391  extern QMapPoint QMapPointForCoordinate(CLLocationCoordinate2D coordinate);
392 
400  extern CLLocationCoordinate2D QCoordinateForMapPoint(QMapPoint mapPoint);
401 
409  extern QCoordinateRegion QCoordinateRegionForMapRect(QMapRect rect);
410 
418  extern QMapRect QMapRectForCoordinateRegion(QCoordinateRegion region);
419 
427  extern CLLocationDistance QMetersPerMapPointAtLatitude(CLLocationDegrees latitude);
428 
436  extern double QMapPointsPerMeterAtLatitude(CLLocationDegrees latitude);
437 
447  static inline QCoordinateRegion QCoordinateRegionMakeWithDistance(CLLocationCoordinate2D centerCoordinate, CLLocationDistance latitudinalMeters, CLLocationDistance longitudinalMeters)
448  {
449  QMapSize spanSize = QMapSizeMake(QMapPointsPerMeterAtLatitude(centerCoordinate.latitude) * latitudinalMeters, QMapPointsPerMeterAtLatitude(centerCoordinate.latitude) * longitudinalMeters);
450 
451  QMapPoint center = QMapPointForCoordinate(centerCoordinate);
452  QMapPoint leftTop = QMapPointMake(center.x - spanSize.width / 2.0, center.y - spanSize.height / 2.0);
453  QMapPoint rightBottom = QMapPointMake(center.x + spanSize.width / 2.0, center.y + spanSize.height / 2.0);
454 
455  CLLocationCoordinate2D leftTopCoordinate = QCoordinateForMapPoint(leftTop);
456  CLLocationCoordinate2D rightBottomCoordinate = QCoordinateForMapPoint(rightBottom);
457 
458  return QCoordinateRegionMake(centerCoordinate,
459  QCoordinateSpanMake(fabs(leftTopCoordinate.latitude - rightBottomCoordinate.latitude),
460  fabs(leftTopCoordinate.longitude - rightBottomCoordinate.longitude)));
461  }
462 
472  extern BOOL QPolygonContainsPoint(QMapPoint point, QMapPoint *polygon, NSUInteger count);
473 
481  extern BOOL QPolygonContainsCoordinate(CLLocationCoordinate2D coordinate, CLLocationCoordinate2D *polygon, NSUInteger count);
482 
491  extern CLLocationDistance QMetersBetweenMapPoints(QMapPoint a, QMapPoint b);
492 
501  extern CLLocationDistance QMetersBetweenCoordinates(CLLocationCoordinate2D a, CLLocationCoordinate2D b);
502 
511  extern QMapRect QBoundingMapRectWithPoints(QMapPoint *points, NSUInteger count);
512 
522  extern QMapRect QBoundingMapRectWithPointsAndCenter(QMapPoint *points, NSUInteger count, QMapPoint centerPoint);
523 
532  extern QCoordinateRegion QBoundingCoordinateRegionWithCoordinates(CLLocationCoordinate2D *coordinates, NSUInteger count);
533 
543  extern QCoordinateRegion QBoundingCoordinateRegionWithCoordinatesAndCenter(CLLocationCoordinate2D *coordinates, NSUInteger count, CLLocationCoordinate2D centerCoordinate);
544 
550  extern QMapRect QWorldMapRect(void);
551 
552 #ifdef __cplusplus
553 }
554 #endif
平面投影大小结构定义
Definition: QGeometry.h:75
平面投影矩形结构定义
Definition: QGeometry.h:84
定义了地图的某一部份的数据结构
Definition: QGeometry.h:30
定义了以 CLLocationDegree 为单位的矩形
Definition: QGeometry.h:21
平面投影坐标结构定义
Definition: QGeometry.h:66