10#import <CoreLocation/CoreLocation.h>
23 CLLocationDegrees latitudeDelta;
24 CLLocationDegrees longitudeDelta;
32 CLLocationCoordinate2D center;
44 static inline QCoordinateSpan QCoordinateSpanMake(CLLocationDegrees latitudeDelta, CLLocationDegrees longitudeDelta)
66 CLLocationCoordinate2D northEast;
110 static inline QMapPoint QMapPointMake(
double x,
double y)
123 static inline QMapSize QMapSizeMake(
double width,
double height)
138 static inline QMapRect QMapRectMake(
double x,
double y,
double width,
double height)
140 return (
QMapRect){QMapPointMake(x, y), QMapSizeMake(width, height)};
150 static inline double QMapRectGetMinX(
QMapRect rect)
152 return rect.origin.x;
162 static inline double QMapRectGetMinY(
QMapRect rect)
164 return rect.origin.y;
174 static inline double QMapRectGetMidX(
QMapRect rect)
176 return rect.origin.x + rect.size.width / 2.0;
186 static inline double QMapRectGetMidY(
QMapRect rect)
188 return rect.origin.y + rect.size.height / 2.0;
198 static inline double QMapRectGetMaxX(
QMapRect rect)
200 return rect.origin.x + rect.size.width;
210 static inline double QMapRectGetMaxY(
QMapRect rect)
212 return rect.origin.y + rect.size.height;
222 static inline double QMapRectGetWidth(
QMapRect rect)
224 return rect.size.width;
234 static inline double QMapRectGetHeight(
QMapRect rect)
236 return rect.size.height;
249 return point1.x == point2.x && point1.y == point2.y;
262 return size1.width == size2.width && size1.height == size2.height;
276 QMapPointEqualToPoint(rect1.origin, rect2.origin) &&
277 QMapSizeEqualToSize(rect1.size, rect2.size);
287 static inline BOOL QMapRectIsNull(
QMapRect rect)
289 return QMapPointEqualToPoint(rect.origin, QMapRectNull.origin);
299 static inline BOOL QMapRectIsEmpty(
QMapRect rect)
301 return QMapRectIsNull(rect) || (rect.size.width == 0.0 && rect.size.height == 0.0);
374 static inline NSString *QStringFromMapPoint(
QMapPoint point)
376 return [NSString stringWithFormat:
@"{%.1f, %.1f}", point.x, point.y];
386 static inline NSString *QStringFromMapSize(
QMapSize size)
388 return [NSString stringWithFormat:
@"{%.1f, %.1f}", size.width, size.height];
398 static inline NSString *QStringFromMapRect(
QMapRect rect)
400 return [NSString stringWithFormat:
@"{%@, %@}", QStringFromMapPoint(rect.origin), QStringFromMapSize(rect.size)];
411 extern QMapPoint QMapPointForCoordinate(CLLocationCoordinate2D coordinate);
420 extern CLLocationCoordinate2D QCoordinateForMapPoint(
QMapPoint mapPoint);
465 extern CLLocationDistance QMetersPerMapPointAtLatitude(CLLocationDegrees latitude);
474 extern double QMapPointsPerMeterAtLatitude(CLLocationDegrees latitude);
485 static inline QCoordinateRegion QCoordinateRegionMakeWithDistance(CLLocationCoordinate2D centerCoordinate, CLLocationDistance latitudinalMeters, CLLocationDistance longitudinalMeters)
487 QMapSize spanSize = QMapSizeMake(QMapPointsPerMeterAtLatitude(centerCoordinate.latitude) * latitudinalMeters, QMapPointsPerMeterAtLatitude(centerCoordinate.latitude) * longitudinalMeters);
489 QMapPoint center = QMapPointForCoordinate(centerCoordinate);
490 QMapPoint leftTop = QMapPointMake(center.x - spanSize.width / 2.0, center.y - spanSize.height / 2.0);
491 QMapPoint rightBottom = QMapPointMake(center.x + spanSize.width / 2.0, center.y + spanSize.height / 2.0);
493 CLLocationCoordinate2D leftTopCoordinate = QCoordinateForMapPoint(leftTop);
494 CLLocationCoordinate2D rightBottomCoordinate = QCoordinateForMapPoint(rightBottom);
496 return QCoordinateRegionMake(centerCoordinate,
497 QCoordinateSpanMake(fabs(leftTopCoordinate.latitude - rightBottomCoordinate.latitude),
498 fabs(leftTopCoordinate.longitude - rightBottomCoordinate.longitude)));
510 extern BOOL QPolygonContainsPoint(
QMapPoint point,
QMapPoint *polygon, NSUInteger count);
519 extern BOOL QPolygonContainsCoordinate(CLLocationCoordinate2D coordinate, CLLocationCoordinate2D *polygon, NSUInteger count);
537 extern BOOL QCircleContainsCoordinate(CLLocationCoordinate2D point, CLLocationCoordinate2D center,
double radius);
552 extern BOOL QPolylineHitTestPoint(
QMapPoint point,
QMapPoint *polyline, NSUInteger count,
double lineWidth);
567 extern BOOL QPolylineHitTestCoordinate(CLLocationCoordinate2D coordinate, CLLocationCoordinate2D *polyline, NSUInteger count,
double lineWidth);
587 extern CLLocationDistance QMetersBetweenCoordinates(CLLocationCoordinate2D a, CLLocationCoordinate2D b);
618 extern QCoordinateRegion QBoundingCoordinateRegionWithCoordinates(CLLocationCoordinate2D *coordinates, NSUInteger count);
629 extern QCoordinateRegion QBoundingCoordinateRegionWithCoordinatesAndCenter(CLLocationCoordinate2D *coordinates, NSUInteger count, CLLocationCoordinate2D centerCoordinate);
636 extern QMapRect QWorldMapRect(
void);
644 extern double QAreaForPolygon(CLLocationCoordinate2D *coordinates,
int count);
649 @interface NSValue (NSValueQGeometryExtensions)
685 + (NSValue *)valueWithCoordinate:(CLLocationCoordinate2D)coordinate;
CLLocationCoordinate2D coordinateValue()
将NSValue对象解析成CLLocationCoordinate2D类型的值
QMapSize QMapSizeValue()
将NSValue对象解析成QMapSize类型的值
QMapPoint QMapPointValue()
将NSValue对象解析成QMapPoint类型的值
QMapRect QMapRectValue()
将NSValue对象解析成QMapRect类型的值
经纬度区域结构定义
定义 QGeometry.h:65
CLLocationCoordinate2D southWest
东北角点经纬度坐标
定义 QGeometry.h:67
定义了地图的某一部份的数据结构
定义 QGeometry.h:31
定义了以 CLLocationDegree 为单位的矩形
定义 QGeometry.h:22
平面投影坐标结构定义
定义 QGeometry.h:74
平面投影矩形结构定义
定义 QGeometry.h:92
平面投影大小结构定义
定义 QGeometry.h:83