8 #import <BaiduMapAPI_Base/BMKTypes.h>
9 #import <UIKit/UIKit.h>
12 #pragma mark -----坐标转换
18 UIKIT_EXTERN
BMKMapPoint BMKMapPointForCoordinate(CLLocationCoordinate2D coordinate);
25 UIKIT_EXTERN CLLocationCoordinate2D BMKCoordinateForMapPoint(
BMKMapPoint mapPoint);
33 UIKIT_EXTERN CGPoint BMKConvertToBaiduMercatorFromBD09LL(CLLocationCoordinate2D bd09llCoordinate);
40 UIKIT_EXTERN CLLocationCoordinate2D BMKConvertToBD09LLFromBaiduMercator(CGPoint bdMCTCoordinate);
52 UIKIT_EXTERN CLLocationCoordinate2D BMKCoordTrans(CLLocationCoordinate2D coordinate, BMK_COORD_TYPE fromType, BMK_COORD_TYPE toType);
60 FOUNDATION_EXTERN NSDictionary* BMKConvertBaiduCoorFrom(CLLocationCoordinate2D coordinate,BMK_COORD_TYPE type) __attribute__((deprecated(
"使用BMKCoordTrans方法代替")));
62 #pragma mark -----几何计算
68 UIKIT_EXTERN CLLocationDistance BMKMetersPerMapPointAtLatitude(CLLocationDegrees latitude);
75 UIKIT_EXTERN
double BMKMapPointsPerMeterAtLatitude(CLLocationDegrees latitude);
91 UIKIT_EXTERN CLLocationDistance BMKMetersBetweenCoordinates(CLLocationCoordinate2D a, CLLocationCoordinate2D b);
99 UIKIT_STATIC_INLINE
double BMKMapRectGetWidth(
BMKMapRect rect) {
100 return rect.
size.width;
108 UIKIT_STATIC_INLINE
double BMKMapRectGetHeight(
BMKMapRect rect) {
119 return point1.x == point2.x && point1.
y == point2.
y;
155 UIKIT_EXTERN
BMKCoordinateRegion BMKCoordinateRegionMakeWithDistance(CLLocationCoordinate2D centerCoordinate, CLLocationDistance latitudinalMeters, CLLocationDistance longitudinalMeters);
165 return size1.width == size2.width && size1.
height == size2.
height;
176 BMKMapPointEqualToPoint(rect1.origin, rect2.origin) &&
177 BMKMapSizeEqualToSize(rect1.
size, rect2.
size);
185 UIKIT_STATIC_INLINE BOOL BMKMapRectIsEmpty(
BMKMapRect rect) {
186 return BMKMapRectIsNull(rect) || (rect.
size.width == 0.0 && rect.
size.
height == 0.0);
271 UIKIT_EXTERN BOOL BMKMapRectSpans180thMeridian(
BMKMapRect rect);
297 UIKIT_EXTERN BOOL BMKCircleContainsCoordinate(CLLocationCoordinate2D point, CLLocationCoordinate2D center,
double radius);
316 UIKIT_EXTERN BOOL BMKPolygonContainsCoordinate(CLLocationCoordinate2D point, CLLocationCoordinate2D *polygon, NSUInteger count);
326 UIKIT_EXTERN
double BMKAreaBetweenCoordinates(CLLocationCoordinate2D leftTop, CLLocationCoordinate2D rightBottom);
336 UIKIT_EXTERN
double BMKAreaForPolygon(CLLocationCoordinate2D *coordinates,
int count);
339 #pragma mark -----Others
347 UIKIT_EXTERN CLLocationDirection BMKGetDirectionFromCoords(CLLocationCoordinate2D startCoord, CLLocationCoordinate2D endCoord);
360 UIKIT_STATIC_INLINE NSString *BMKStringFromMapPoint(
BMKMapPoint point) {
361 return [NSString stringWithFormat:
@"{%.1f, %.1f}", point.x, point.
y];
369 UIKIT_STATIC_INLINE NSString *BMKStringFromMapSize(
BMKMapSize size) {
370 return [NSString stringWithFormat:
@"{%.1f, %.1f}", size.width, size.
height];
378 UIKIT_STATIC_INLINE NSString *BMKStringFromMapRect(
BMKMapRect rect) {
379 return [NSString stringWithFormat:
@"{%@, %@}", BMKStringFromMapPoint(rect.origin), BMKStringFromMapSize(rect.
size)];
387 UIKIT_EXTERN CLLocationCoordinate2D BMKCoorDictionaryDecode(NSDictionary* dictionary);
393 UIKIT_EXTERN
BMKMapRect BMKMapRectFromEncodedGeoPoints(NSString *encodedGeoPoints, BMKEncodePointType type);
400 UIKIT_EXTERN BOOL BMKEncodedGeoPointsContainsPoint(
BMKMapPoint point,
401 NSString *encodedGeoPoints,
402 BMKEncodePointType type);
409 UIKIT_EXTERN BOOL BMKEncodedGeoPointsContainsCoordinate(CLLocationCoordinate2D point,
410 NSString *encodedGeoPoints,
411 BMKEncodePointType type);
419 + (NSValue *)valueWithBMKMapPoint:(
BMKMapPoint)mapPoint;
424 + (NSValue *)valueWithBMKMapSize:(
BMKMapSize)mapSize;
429 + (NSValue *)valueWithBMKMapRect:(
BMKMapRect)mapRect;
434 + (NSValue *)valueWithCoordinate2D:(CLLocationCoordinate2D)coordinate;