iOS高德地图SDK(2D)  v5.6.0
MAGeometry.h
Go to the documentation of this file.
1 //
2 // MAGeometry.h
3 // MAMapKit
4 //
5 // Created by AutoNavi.
6 // Copyright (c) 2013年 Amap. All rights reserved.
7 //
8 #import <CoreGraphics/CoreGraphics.h>
9 #import <CoreLocation/CoreLocation.h>
10 #import <UIKit/UIKit.h>
11 
12 #ifdef __cplusplus
13 extern "C" {
14 #endif
15 
18  CLLocationCoordinate2D northEast;
19  CLLocationCoordinate2D southWest;
20  };
22 
25  CLLocationDegrees latitudeDelta;
26  CLLocationDegrees longitudeDelta;
27  };
29 
32  CLLocationCoordinate2D center;
34  };
36 
38  struct MAMapPoint{
39  double x;
40  double y;
41  };
42  typedef struct MAMapPoint MAMapPoint;
43 
45  struct MAMapSize{
46  double width;
47  double height;
48  };
49  typedef struct MAMapSize MAMapSize;
50 
52  struct MAMapRect{
55  };
56  typedef struct MAMapRect MAMapRect;
57 
59  typedef double MAZoomScale;
60 
62  extern const MAMapSize MAMapSizeWorld;
64  extern const MAMapRect MAMapRectWorld;
66  extern const MAMapRect MAMapRectNull;
68  extern const MAMapRect MAMapRectZero;
69 
70  static inline MACoordinateBounds MACoordinateBoundsMake(CLLocationCoordinate2D northEast,CLLocationCoordinate2D southWest)
71  {
72  return (MACoordinateBounds){northEast, southWest};
73  }
74 
75  static inline MACoordinateSpan MACoordinateSpanMake(CLLocationDegrees latitudeDelta, CLLocationDegrees longitudeDelta)
76  {
77  return (MACoordinateSpan){latitudeDelta, longitudeDelta};
78  }
79 
80  static inline MACoordinateRegion MACoordinateRegionMake(CLLocationCoordinate2D centerCoordinate, MACoordinateSpan span)
81  {
82  return (MACoordinateRegion){centerCoordinate, span};
83  }
84 
92  extern MACoordinateRegion MACoordinateRegionMakeWithDistance(CLLocationCoordinate2D centerCoordinate, CLLocationDistance latitudinalMeters, CLLocationDistance longitudinalMeters);
93 
99  extern MAMapPoint MAMapPointForCoordinate(CLLocationCoordinate2D coordinate);
100 
106  extern CLLocationCoordinate2D MACoordinateForMapPoint(MAMapPoint mapPoint);
107 
114 
121 
127  extern CLLocationDistance MAMetersPerMapPointAtLatitude(CLLocationDegrees latitude);
128 
134  extern double MAMapPointsPerMeterAtLatitude(CLLocationDegrees latitude);
135 
142  extern CLLocationDistance MAMetersBetweenMapPoints(MAMapPoint a, MAMapPoint b);
143 
150  extern double MAAreaBetweenCoordinates(CLLocationCoordinate2D northEast, CLLocationCoordinate2D southWest);
151 
159  extern MAMapRect MAMapRectInset(MAMapRect rect, double dx, double dy);
160 
167  extern MAMapRect MAMapRectUnion(MAMapRect rect1, MAMapRect rect2);
168 
175  extern BOOL MAMapSizeContainsSize(MAMapSize size1, MAMapSize size2);
176 
183  extern BOOL MAMapRectContainsPoint(MAMapRect rect, MAMapPoint point);
184 
191  extern BOOL MAMapRectIntersectsRect(MAMapRect rect1, MAMapRect rect2);
192 
199  extern BOOL MAMapRectContainsRect(MAMapRect rect1, MAMapRect rect2);
200 
208  extern BOOL MACircleContainsPoint(MAMapPoint point, MAMapPoint center, double radius);
209 
217  extern BOOL MACircleContainsCoordinate(CLLocationCoordinate2D point, CLLocationCoordinate2D center, double radius);
218 
226  extern BOOL MAPolygonContainsPoint(MAMapPoint point, MAMapPoint *polygon, NSUInteger count);
227 
235  extern BOOL MAPolygonContainsCoordinate(CLLocationCoordinate2D point, CLLocationCoordinate2D *polygon, NSUInteger count);
236 
244  extern MAMapPoint MAGetNearestMapPointFromLine(MAMapPoint lineStart, MAMapPoint lineEnd, MAMapPoint point);
245 
255  typedef void (^AMapTileProjectionBlock)(int offsetX, int offsetY, int minX, int maxX, int minY, int maxY);
256 
263  extern void MAGetTileProjectionFromBounds(MACoordinateBounds bounds, int levelOfDetails, AMapTileProjectionBlock tileProjection);
264 
265 
266  static inline MAMapPoint MAMapPointMake(double x, double y)
267  {
268  return (MAMapPoint){x, y};
269  }
270 
271  static inline MAMapSize MAMapSizeMake(double width, double height)
272  {
273  return (MAMapSize){width, height};
274  }
275 
276  static inline MAMapRect MAMapRectMake(double x, double y, double width, double height)
277  {
278  return (MAMapRect){MAMapPointMake(x, y), MAMapSizeMake(width, height)};
279  }
280 
281  static inline double MAMapRectGetMinX(MAMapRect rect)
282  {
283  return rect.origin.x;
284  }
285 
286  static inline double MAMapRectGetMinY(MAMapRect rect)
287  {
288  return rect.origin.y;
289  }
290 
291  static inline double MAMapRectGetMidX(MAMapRect rect)
292  {
293  return rect.origin.x + rect.size.width / 2.0;
294  }
295 
296  static inline double MAMapRectGetMidY(MAMapRect rect)
297  {
298  return rect.origin.y + rect.size.height / 2.0;
299  }
300 
301  static inline double MAMapRectGetMaxX(MAMapRect rect)
302  {
303  return rect.origin.x + rect.size.width;
304  }
305 
306  static inline double MAMapRectGetMaxY(MAMapRect rect)
307  {
308  return rect.origin.y + rect.size.height;
309  }
310 
311  static inline double MAMapRectGetWidth(MAMapRect rect)
312  {
313  return rect.size.width;
314  }
315 
316  static inline double MAMapRectGetHeight(MAMapRect rect)
317  {
318  return rect.size.height;
319  }
320 
321  static inline BOOL MAMapPointEqualToPoint(MAMapPoint point1, MAMapPoint point2) {
322  return point1.x == point2.x && point1.y == point2.y;
323  }
324 
325  static inline BOOL MAMapSizeEqualToSize(MAMapSize size1, MAMapSize size2) {
326  return size1.width == size2.width && size1.height == size2.height;
327  }
328 
329  static inline BOOL MAMapRectEqualToRect(MAMapRect rect1, MAMapRect rect2) {
330  return
331  MAMapPointEqualToPoint(rect1.origin, rect2.origin) &&
332  MAMapSizeEqualToSize(rect1.size, rect2.size);
333  }
334 
335  static inline BOOL MAMapRectIsNull(MAMapRect rect) {
336  return isinf(rect.origin.x) || isinf(rect.origin.y);
337  }
338 
339  static inline BOOL MAMapRectIsEmpty(MAMapRect rect) {
340  return MAMapRectIsNull(rect) || (rect.size.width == 0.0 && rect.size.height == 0.0);
341  }
342 
343  static inline NSString *MAStringFromMapPoint(MAMapPoint point) {
344  return [NSString stringWithFormat:@"{%.1f, %.1f}", point.x, point.y];
345  }
346 
347  static inline NSString *MAStringFromMapSize(MAMapSize size) {
348  return [NSString stringWithFormat:@"{%.1f, %.1f}", size.width, size.height];
349  }
350 
351  static inline NSString *MAStringFromMapRect(MAMapRect rect) {
352  return [NSString stringWithFormat:@"{%@, %@}", MAStringFromMapPoint(rect.origin), MAStringFromMapSize(rect.size)];
353  }
354 
356  typedef NS_ENUM(NSUInteger, MACoordinateType)
357  {
365  };
366 
373  extern CLLocationCoordinate2D MACoordinateConvert(CLLocationCoordinate2D coordinate, MACoordinateType type) __attribute((deprecated("已废弃,使用AMapFoundation中关于坐标转换的接口")));
374 
381  extern CLLocationDirection MAGetDirectionFromCoords(CLLocationCoordinate2D fromCoord, CLLocationCoordinate2D toCoord);
382 
383 #ifdef __cplusplus
384 }
385 #endif
386 
389 
395 + (NSValue *)valueWithMAMapPoint:(MAMapPoint)mapPoint;
396 
402 + (NSValue *)valueWithMAMapSize:(MAMapSize)mapSize;
403 
409 + (NSValue *)valueWithMAMapRect:(MAMapRect)mapRect;
410 
416 + (NSValue *)valueWithMACoordinate:(CLLocationCoordinate2D)coordinate;
417 
423 
429 
435 
440 - (CLLocationCoordinate2D)MACoordinateValue;
441 
442 @end
MACoordinateSpan span
跨度范围
Definition: MAGeometry.h:33
CLLocationDistance MAMetersBetweenMapPoints(MAMapPoint a, MAMapPoint b)
投影两点之间的距离
Baidu.
Definition: MAGeometry.h:358
double y
y坐标
Definition: MAGeometry.h:40
BOOL MAMapSizeContainsSize(MAMapSize size1, MAMapSize size2)
判断size1是否包含size2
经度、纬度定义的经纬度跨度范围
Definition: MAGeometry.h:24
BOOL MAMapRectContainsRect(MAMapRect rect1, MAMapRect rect2)
判断矩形rect1是否包含矩形rect2
SoSoMap.
Definition: MAGeometry.h:361
CLLocationCoordinate2D MACoordinateConvert(CLLocationCoordinate2D coordinate, MACoordinateType type) __attribute((deprecated("已废弃,使用AMapFoundation中关于坐标转换的接口")))
转换目标经纬度为高德坐标系
void(^ AMapTileProjectionBlock)(int offsetX, int offsetY, int minX, int maxX, int minY, int maxY)
获取墨卡托投影切块回调block,如果是无效的映射,则返回(-1, -1, 0, 0, 0, 0)
Definition: MAGeometry.h:255
平面投影坐标结构定义
Definition: MAGeometry.h:38
void MAGetTileProjectionFromBounds(MACoordinateBounds bounds, int levelOfDetails, AMapTileProjectionBlock tileProjection)
根据所给经纬度区域获取墨卡托投影切块信息
MAMapRect MAMapRectUnion(MAMapRect rect1, MAMapRect rect2)
合并两个MAMapRect
中心点、跨度范围定义的四边形经纬度范围
Definition: MAGeometry.h:31
CLLocationCoordinate2D southWest
西南角经纬度
Definition: MAGeometry.h:19
double MAMapPointsPerMeterAtLatitude(CLLocationDegrees latitude)
1米对应的投影
MAMapRect MAMapRectValue()
返回NSValue对象包含的MAMapRect结构体对象
CLLocationCoordinate2D northEast
东北角经纬度
Definition: MAGeometry.h:18
double width
宽度
Definition: MAGeometry.h:46
double MAAreaBetweenCoordinates(CLLocationCoordinate2D northEast, CLLocationCoordinate2D southWest)
经纬度间的面积(单位 平方米)
BOOL MAPolygonContainsPoint(MAMapPoint point, MAMapPoint *polygon, NSUInteger count)
判断点是否在多边形内
CLLocationDegrees longitudeDelta
经度跨度
Definition: MAGeometry.h:26
MAMapPoint origin
左上角坐标
Definition: MAGeometry.h:53
BOOL MAMapRectContainsPoint(MAMapRect rect, MAMapPoint point)
判断点是否在矩形内
BOOL MACircleContainsCoordinate(CLLocationCoordinate2D point, CLLocationCoordinate2D center, double radius)
判断经纬度点是否在圆内
const MAMapRect MAMapRectNull
(MAMapRect){{INFINITY, INFINITY}, {0, 0}};
BOOL MAPolygonContainsCoordinate(CLLocationCoordinate2D point, CLLocationCoordinate2D *polygon, NSUInteger count)
判断经纬度点是否在多边形内
MAMapSize size
大小
Definition: MAGeometry.h:54
MAMapSize MAMapSizeValue()
返回NSValue对象包含的MAMapSize结构体对象
BOOL MACircleContainsPoint(MAMapPoint point, MAMapPoint center, double radius)
判断点是否在圆内
double x
x坐标
Definition: MAGeometry.h:39
const MAMapSize MAMapSizeWorld
世界范围大小
MACoordinateRegion MACoordinateRegionMakeWithDistance(CLLocationCoordinate2D centerCoordinate, CLLocationDistance latitudinalMeters, CLLocationDistance longitudinalMeters)
生成一个新的MACoordinateRegion
CLLocationCoordinate2D MACoordinateForMapPoint(MAMapPoint mapPoint)
平面投影坐标转经纬度坐标
BOOL MAMapRectIntersectsRect(MAMapRect rect1, MAMapRect rect2)
判断两矩形是否相交
GPS.
Definition: MAGeometry.h:364
MapABC.
Definition: MAGeometry.h:360
MAMapPoint MAMapPointForCoordinate(CLLocationCoordinate2D coordinate)
经纬度坐标转平面投影坐标
double height
高度
Definition: MAGeometry.h:47
平面投影大小结构定义
Definition: MAGeometry.h:45
MAMapPoint MAMapPointValue()
返回NSValue对象包含的MAMapPoint结构体对象
Google.
Definition: MAGeometry.h:363
MapBar.
Definition: MAGeometry.h:359
CLLocationDistance MAMetersPerMapPointAtLatitude(CLLocationDegrees latitude)
单位投影的距离
AliYun.
Definition: MAGeometry.h:362
CLLocationCoordinate2D MACoordinateValue()
返回NSValue对象包含的CLLocationCoordinate2D结构体对象
CLLocationDegrees latitudeDelta
纬度跨度
Definition: MAGeometry.h:25
平面投影矩形结构定义
Definition: MAGeometry.h:52
MAMapRect MAMapRectForCoordinateRegion(MACoordinateRegion region)
region转平面投影矩形
CLLocationDirection MAGetDirectionFromCoords(CLLocationCoordinate2D fromCoord, CLLocationCoordinate2D toCoord)
获取矢量坐标方向
const MAMapRect MAMapRectZero
(MAMapRect){{0, 0}, {0, 0}}
double MAZoomScale
比例关系:MAZoomScale = Screen Point / MAMapPoint, 当MAZoomScale = 1时, 1 screen point = 1 MAMapPoint...
Definition: MAGeometry.h:59
MACoordinateRegion MACoordinateRegionForMapRect(MAMapRect rect)
平面投影矩形转region
const MAMapRect MAMapRectWorld
世界范围四边形
东北、西南两个点定义的四边形经纬度范围
Definition: MAGeometry.h:17
MACoordinateType
坐标系类型枚举
Definition: MAGeometry.h:356
MAMapRect MAMapRectInset(MAMapRect rect, double dx, double dy)
获取Inset后的MAMapRect
utils方法,方便c结构体对象和NSValue对象间相互转化
Definition: MAGeometry.h:388
CLLocationCoordinate2D center
中心点经纬度
Definition: MAGeometry.h:32
MAMapPoint MAGetNearestMapPointFromLine(MAMapPoint lineStart, MAMapPoint lineEnd, MAMapPoint point)
取在lineStart和lineEnd组成的线段上距离point距离最近的点
© 2017 高德信息技术有限公司 版权所有,保留所有权利。