BaiduMap_IOSSDK_v5.2.0_Docs
BMKGeometry.h
1 /* BMKGeometry.h
2  * BMapKit
3  *
4  * Copyright 2011 Baidu Inc. All rights reserved.
5  *
6  */
7 
8 #import <BaiduMapAPI_Base/BMKTypes.h>
9 #import <UIKit/UIKit.h>
10 
11 
12 #pragma mark -----坐标转换
13 
18 UIKIT_EXTERN BMKMapPoint BMKMapPointForCoordinate(CLLocationCoordinate2D coordinate);
19 
25 UIKIT_EXTERN CLLocationCoordinate2D BMKCoordinateForMapPoint(BMKMapPoint mapPoint);
26 
27 
33 UIKIT_EXTERN CGPoint BMKConvertToBaiduMercatorFromBD09LL(CLLocationCoordinate2D bd09llCoordinate);
34 
40 UIKIT_EXTERN CLLocationCoordinate2D BMKConvertToBD09LLFromBaiduMercator(CGPoint bdMCTCoordinate);
41 
52 UIKIT_EXTERN CLLocationCoordinate2D BMKCoordTrans(CLLocationCoordinate2D coordinate, BMK_COORD_TYPE fromType, BMK_COORD_TYPE toType);
53 
60 UIKIT_EXTERN NSDictionary* BMKConvertBaiduCoorFrom(CLLocationCoordinate2D coordinate,BMK_COORD_TYPE type) __attribute__((deprecated("使用BMKCoordTrans方法代替")));
61 
62 #pragma mark -----几何计算
63 
68 UIKIT_EXTERN CLLocationDistance BMKMetersPerMapPointAtLatitude(CLLocationDegrees latitude);
69 
75 UIKIT_EXTERN double BMKMapPointsPerMeterAtLatitude(CLLocationDegrees latitude);
76 
83 UIKIT_EXTERN CLLocationDistance BMKMetersBetweenMapPoints(BMKMapPoint a, BMKMapPoint b);
84 
90 UIKIT_STATIC_INLINE double BMKMapRectGetWidth(BMKMapRect rect) {
91  return rect.size.width;
92 }
93 
99 UIKIT_STATIC_INLINE double BMKMapRectGetHeight(BMKMapRect rect) {
100  return rect.size.height;
101 }
102 
109 UIKIT_STATIC_INLINE BOOL BMKMapPointEqualToPoint(BMKMapPoint point1, BMKMapPoint point2) {
110  return point1.x == point2.x && point1.y == point2.y;
111 }
112 
120 UIKIT_EXTERN BMKMapPoint BMKGetNearestMapPointFromPolyline(BMKMapPoint point, BMKMapPoint* polyline, NSUInteger count);
128 UIKIT_EXTERN BMKMapPoint BMKGetPointToTheVerticalFootOfLine(BMKMapPoint point, BMKMapPoint lineStartPt, BMKMapPoint lineEndPt);
136 UIKIT_EXTERN CLLocationDistance BMKGetDistanceFromPointToLine(BMKMapPoint point, BMKMapPoint lineStartPt, BMKMapPoint lineEndPt);
137 
138 
146 UIKIT_EXTERN BMKCoordinateRegion BMKCoordinateRegionMakeWithDistance(CLLocationCoordinate2D centerCoordinate, CLLocationDistance latitudinalMeters, CLLocationDistance longitudinalMeters);
147 
148 #pragma mark rect
149 
155 UIKIT_STATIC_INLINE BOOL BMKMapSizeEqualToSize(BMKMapSize size1, BMKMapSize size2) {
156  return size1.width == size2.width && size1.height == size2.height;
157 }
158 
165 UIKIT_STATIC_INLINE BOOL BMKMapRectEqualToRect(BMKMapRect rect1, BMKMapRect rect2) {
166  return
167  BMKMapPointEqualToPoint(rect1.origin, rect2.origin) &&
168  BMKMapSizeEqualToSize(rect1.size, rect2.size);
169 }
170 
176 UIKIT_STATIC_INLINE BOOL BMKMapRectIsEmpty(BMKMapRect rect) {
177  return BMKMapRectIsNull(rect) || (rect.size.width == 0.0 && rect.size.height == 0.0);
178 }
179 
180 
181 
188 UIKIT_EXTERN BMKMapRect BMKMapRectUnion(BMKMapRect rect1, BMKMapRect rect2);
189 
196 UIKIT_EXTERN BMKMapRect BMKMapRectIntersection(BMKMapRect rect1, BMKMapRect rect2);
197 
205 UIKIT_EXTERN BMKMapRect BMKMapRectInset(BMKMapRect rect, double dx, double dy);
206 
214 UIKIT_EXTERN BMKMapRect BMKMapRectOffset(BMKMapRect rect, double dx, double dy);
215 
224 UIKIT_EXTERN void BMKMapRectDivide(BMKMapRect rect, BMKMapRect *slice, BMKMapRect *remainder, double amount, CGRectEdge edge);
225 
232 UIKIT_EXTERN BOOL BMKMapRectContainsPoint(BMKMapRect rect, BMKMapPoint point);
233 
240 UIKIT_EXTERN BOOL BMKMapRectContainsRect(BMKMapRect rect1, BMKMapRect rect2);
241 
248 UIKIT_EXTERN BOOL BMKMapRectIntersectsRect(BMKMapRect rect1, BMKMapRect rect2);
249 
255 UIKIT_EXTERN BMKCoordinateRegion BMKCoordinateRegionForMapRect(BMKMapRect rect);
256 
262 UIKIT_EXTERN BOOL BMKMapRectSpans180thMeridian(BMKMapRect rect);
263 
269 UIKIT_EXTERN BMKMapRect BMKMapRectRemainder(BMKMapRect rect);
270 
271 #pragma mark circle
272 
279 UIKIT_EXTERN BOOL BMKCircleContainsPoint(BMKMapPoint point, BMKMapPoint center, double radius);
280 
288 UIKIT_EXTERN BOOL BMKCircleContainsCoordinate(CLLocationCoordinate2D point, CLLocationCoordinate2D center, double radius);
289 
290 #pragma mark polygon
291 
298 UIKIT_EXTERN BOOL BMKPolygonContainsPoint(BMKMapPoint point, BMKMapPoint *polygon, NSUInteger count);
299 
307 UIKIT_EXTERN BOOL BMKPolygonContainsCoordinate(CLLocationCoordinate2D point, CLLocationCoordinate2D *polygon, NSUInteger count);
308 
309 
310 
317 UIKIT_EXTERN double BMKAreaBetweenCoordinates(CLLocationCoordinate2D leftTop, CLLocationCoordinate2D rightBottom);
318 
319 
327 UIKIT_EXTERN double BMKAreaForPolygon(CLLocationCoordinate2D *coordinates, int count);
328 
329 
330 #pragma mark -----Others
331 
338 UIKIT_EXTERN CLLocationDirection BMKGetDirectionFromCoords(CLLocationCoordinate2D startCoord, CLLocationCoordinate2D endCoord);
345 UIKIT_EXTERN CLLocationDirection BMKGetDirectionFromPoints(BMKMapPoint startPt, BMKMapPoint endPt);
351 UIKIT_STATIC_INLINE NSString *BMKStringFromMapPoint(BMKMapPoint point) {
352  return [NSString stringWithFormat:@"{%.1f, %.1f}", point.x, point.y];
353 }
354 
360 UIKIT_STATIC_INLINE NSString *BMKStringFromMapSize(BMKMapSize size) {
361  return [NSString stringWithFormat:@"{%.1f, %.1f}", size.width, size.height];
362 }
363 
369 UIKIT_STATIC_INLINE NSString *BMKStringFromMapRect(BMKMapRect rect) {
370  return [NSString stringWithFormat:@"{%@, %@}", BMKStringFromMapPoint(rect.origin), BMKStringFromMapSize(rect.size)];
371 }
372 
378 UIKIT_EXTERN CLLocationCoordinate2D BMKCoorDictionaryDecode(NSDictionary* dictionary);
double y
横坐标
Definition: BMKTypes.h:168
矩形大小,用直角地理坐标表示
Definition: BMKTypes.h:183
矩形,用直角地理坐标表示
Definition: BMKTypes.h:200
double height
宽度
Definition: BMKTypes.h:185
BMKMapSize size
屏幕左上点对应的直角地理坐标
Definition: BMKTypes.h:202
表示一个经纬度区域
Definition: BMKTypes.h:141
地理坐标点,用直角地理坐标表示
Definition: BMKTypes.h:166