TencentMapSDK_iOS_3D_v1.3.3
QGeometry.h
1 
2  // QGeometry.h
3  // QMapKit
4  //
5  //
6  // Created by jeff on 14-8-4.
7  // Copyright (c) 2014年 Tencent. All rights reserved.
8 
9 
10 
11 #import <CoreGraphics/CoreGraphics.h>
12 #import <CoreLocation/CoreLocation.h>
13 #import <UIKit/UIKit.h>
14 #import "QFoundation.h"
15 
21  typedef struct {
22  CLLocationDegrees latitudeDelta;
23  CLLocationDegrees longitudeDelta;
25 
29  typedef struct {
30  CLLocationCoordinate2D center;
31  QCoordinateSpan span;
33 
42  static inline QCoordinateSpan QCoordinateSpanMake(CLLocationDegrees latitudeDelta, CLLocationDegrees longitudeDelta)
43  {
44  return (QCoordinateSpan){latitudeDelta, longitudeDelta};
45  }
46 
55  static inline QCoordinateRegion QCoordinateRegionMake(CLLocationCoordinate2D centerCoordinate, QCoordinateSpan span)
56  {
57  return (QCoordinateRegion){centerCoordinate, span};
58  }
59 
69  Q_EXTERN QCoordinateRegion QCoordinateRegionMakeWithDistance(CLLocationCoordinate2D centerCoordinate, CLLocationDistance latitudinalMeters, CLLocationDistance longitudinalMeters);
70 
74  typedef struct {
75  double x;
76  double y;
77  } QMapPoint;
78 
82  typedef struct {
83  double width;
84  double height;
85  } QMapSize;
86 
90  typedef struct {
91  QMapPoint origin;
92  QMapSize size;
93  } QMapRect;
94 
95  Q_EXTERN const QMapRect QMapRectNull;
96 
97  typedef CGFloat QZoomScale;
98 
106  Q_EXTERN QMapPoint QMapPointForCoordinate(CLLocationCoordinate2D coordinate);
107 
115  Q_EXTERN CLLocationCoordinate2D QCoordinateForMapPoint(QMapPoint mapPoint);
116 
124  Q_EXTERN QCoordinateRegion QCoordinateRegionForMapRect(QMapRect rect);
125 
133  Q_EXTERN QMapRect QMapRectForCoordinateRegion(QCoordinateRegion region);
134 
142  Q_EXTERN CLLocationDistance QMetersPerMapPointAtLatitude(CLLocationDegrees latitude);
143 
151  Q_EXTERN double QMapPointsPerMeterAtLatitude(CLLocationDegrees latitude);
152 
161  Q_EXTERN CLLocationDistance QMetersBetweenMapPoints(QMapPoint a, QMapPoint b);
162 
171  Q_EXTERN double QAreaBetweenCoordinates(CLLocationCoordinate2D leftTop, CLLocationCoordinate2D rightBottom);
172 
181  Q_EXTERN BOOL QMapRectContainsPoint(QMapRect rect, QMapPoint point);
182 
191  Q_EXTERN BOOL QMapRectIntersectsRect(QMapRect rect1, QMapRect rect2);
192 
201  Q_EXTERN BOOL QMapRectContainsRect(QMapRect rect1, QMapRect rect2);
202 
211  Q_EXTERN QMapRect QMapRectUnion(QMapRect rect1, QMapRect rect2);
212 
221  Q_EXTERN QMapRect QMapRectIntersection(QMapRect rect1, QMapRect rect2);
222 
232  Q_EXTERN BOOL QCircleContainsPoint(QMapPoint point, QMapPoint center, double radius);
233 
243  Q_EXTERN BOOL QCircleContainsCoordinate(CLLocationCoordinate2D point, CLLocationCoordinate2D center, double radius);
244 
254  Q_EXTERN BOOL QPolygonContainsPoint(QMapPoint point, QMapPoint *polygon, NSUInteger count);
255 
265  Q_EXTERN BOOL QPolygonContainsCoordinate(CLLocationCoordinate2D point, CLLocationCoordinate2D *polygon, NSUInteger count);
266 
275  static inline QMapPoint QMapPointMake(double x, double y)
276  {
277  return (QMapPoint){x, y};
278  }
279 
288  static inline QMapSize QMapSizeMake(double width, double height)
289  {
290  return (QMapSize){width, height};
291  }
292 
303  static inline QMapRect QMapRectMake(double x, double y, double width, double height)
304  {
305  return (QMapRect){QMapPointMake(x, y), QMapSizeMake(width, height)};
306  }
307 
315  static inline QMapRect QMapRectMakeFromCGRect(CGRect rect)
316  {
317  return QMapRectMake(rect.origin.x, rect.origin.y, rect.size.width, rect.size.height);
318  }
319 
327  static inline double QMapRectGetMinX(QMapRect rect)
328  {
329  return rect.origin.x;
330  }
331 
339  static inline double QMapRectGetMinY(QMapRect rect)
340  {
341  return rect.origin.y;
342  }
343 
351  static inline double QMapRectGetMidX(QMapRect rect)
352  {
353  return rect.origin.x + rect.size.width / 2.0;
354  }
355 
363  static inline double QMapRectGetMidY(QMapRect rect)
364  {
365  return rect.origin.y + rect.size.height / 2.0;
366  }
367 
375  static inline double QMapRectGetMaxX(QMapRect rect)
376  {
377  return rect.origin.x + rect.size.width;
378  }
379 
387  static inline double QMapRectGetMaxY(QMapRect rect)
388  {
389  return rect.origin.y + rect.size.height;
390  }
391 
399  static inline double QMapRectGetWidth(QMapRect rect)
400  {
401  return rect.size.width;
402  }
403 
411  static inline double QMapRectGetHeight(QMapRect rect)
412  {
413  return rect.size.height;
414  }
415 
424  static inline BOOL QMapPointEqualToPoint(QMapPoint point1, QMapPoint point2) {
425  return point1.x == point2.x && point1.y == point2.y;
426  }
427 
436  static inline BOOL QMapSizeEqualToSize(QMapSize size1, QMapSize size2) {
437  return size1.width == size2.width && size1.height == size2.height;
438  }
439 
448  static inline BOOL QMapRectEqualToRect(QMapRect rect1, QMapRect rect2) {
449  return
450  QMapPointEqualToPoint(rect1.origin, rect2.origin) &&
451  QMapSizeEqualToSize(rect1.size, rect2.size);
452  }
453 
461  static inline BOOL QMapRectIsNull(QMapRect rect) {
462  return isinf(rect.origin.x) || isinf(rect.origin.y);
463  }
464 
472  static inline BOOL QMapRectIsEmpty(QMapRect rect) {
473  return QMapRectIsNull(rect) || (rect.size.width == 0.0 && rect.size.height == 0.0);
474  }
475 
483  static inline NSString *QStringFromMapPoint(QMapPoint point) {
484  return [NSString stringWithFormat:@"{%.1f, %.1f}", point.x, point.y];
485  }
486 
494  static inline NSString *QStringFromMapSize(QMapSize size) {
495  return [NSString stringWithFormat:@"{%.1f, %.1f}", size.width, size.height];
496  }
497 
505  static inline NSString *QStringFromMapRect(QMapRect rect) {
506  return [NSString stringWithFormat:@"{%@, %@}", QStringFromMapPoint(rect.origin), QStringFromMapSize(rect.size)];
507  }
508 
509 
514 
522 + (NSValue *)valueWithQMapPoint:(QMapPoint)mapPoint;
523 
531 + (NSValue *)valueWithQMapSize:(QMapSize)mapSize;
532 
540 + (NSValue *)valueWithQMapRect:(QMapRect)mapRect;
541 
549 + (NSValue *)valueWithCoordinate:(CLLocationCoordinate2D)coordinate;
550 
557 
564 
571 
577 - (CLLocationCoordinate2D)coordinateValue;
578 
579 @end
NSValue对地图相关数据类型的扩展
Definition: QGeometry.h:513
QMapSize QMapSizeValue()
将NSValue对象解析成QMapSize类型的值
平面投影大小结构定义
Definition: QGeometry.h:82
CLLocationCoordinate2D coordinateValue()
将NSValue对象解析成CLLocationCoordinate2D类型的值
平面投影矩形结构定义
Definition: QGeometry.h:90
定义了地图的某一部份的数据结构
Definition: QGeometry.h:29
定义了以CLLocationDegree为单位的矩形
Definition: QGeometry.h:21
QMapRect QMapRectValue()
将NSValue对象解析成QMapRect类型的值
QMapPoint QMapPointValue()
将NSValue对象解析成QMapPoint类型的值
平面投影坐标结构定义
Definition: QGeometry.h:74