iOS 地图功能开发研究

地图sdk厂商

百度地图
苹果地图
高德地图
谷歌地图
腾讯地图(SOSO地图)
阿里云地图
搜狗地图
天地图
mapbar地图(图吧)
MapABC地图
51地图

地图使用

1、定义大头针和大头针弹出框
地点标注:在指定坐标点上显示点的名称和内容信息

绘制标注:addAnnotation

- (nullable MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id )annotation


绘制路线:addOverlay

- (MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id )overlay

绘制区域框

MKAnnotationView
    MKPinAnnotationView

MKMapView

MKOverlayView
    MKOverlayPathView
        MKCircleView
        MKPolygonView   
        MKPolylineView

MKOverlayRenderer
        MKTileOverlayRenderer
        MKOverlayPathRenderer
            MKPolylineRenderer
            MKCircleRenderer
            MKPolygonRenderer

自定大头针图片,大头针弹出框显示文字,弹出框显示附加视图,弹出框点击事件。

2、 设置地图显示位置点、地图显示区域。
中心点经纬度, 经度和纬度的偏移量。
中心点经纬度,距离半径, 米为单位。
MKMapView
setRegion/setCenterCoordinate

3、 让地图自动获取当前中心点位置

4、地图相关属性
显示样式: 标准、卫星、混合、3D混合
跟踪样式

    mapview.showsUserLocation=NO;  //标准自身位置
    mapview.showsCompass=YES;   //显示地图上的指南针
    mapview.showsBuildings=YES; //显示地图上的建筑物
    mapview.showsScale=YES; //显示地图上的缩放比例
    mapview.showsTraffic=YES;   //显示地图上的交通
    mapview.showsPointsOfInterest=YES;  //显示地图上的POI点


    mapview.userTrackingMode=({
        //跟踪位置
        //MKUserTrackingModeFollow;
        //不跟踪
        //MKUserTrackingModeNone;
        //跟踪位置和方向
        MKUserTrackingModeFollowWithHeading;
    });

5、路线规划
MKDirections
公交、地铁线路查询

6、导航
公交、驾车、步行和骑行导航:展示指定导航模式下从起点到终点的路线规划。
直接进入驾车导航模式

  MKMapItem* (^get_mkmapitem_block)(CLLocationDegrees latitude, CLLocationDegrees longitude)=^(CLLocationDegrees latitude, CLLocationDegrees longitude){
        CLLocationCoordinate2D coordinate1=CLLocationCoordinate2DMake(latitude,longitude);
        MKPlacemark*placemark1= [[MKPlacemark alloc] initWithCoordinate:coordinate1];
        MKMapItem*item1=[[MKMapItem alloc] initWithPlacemark:placemark1];
        return item1;
    };
    MKMapItem*item1=  get_mkmapitem_block( start.latitude, start.longitude);
    MKMapItem*item2=  get_mkmapitem_block( end.latitude, end.longitude);
    NSMutableDictionary *info = [NSMutableDictionary dictionary];
    // 导航模式(驾车/走路)
    info[MKLaunchOptionsDirectionsModeKey] =
    //                MKLaunchOptionsDirectionsModeTransit;//公交
    //                MKLaunchOptionsDirectionsModeWalking; //步行
    //                MKLaunchOptionsDirectionsModeDriving; //驾车
    MKLaunchOptionsDirectionsModeDefault;//自动匹配
    info[MKLaunchOptionsMapTypeKey]=@(MKMapTypeHybrid);
    info[MKLaunchOptionsShowsTrafficKey]=@(true);
    info[MKLaunchOptionsMapCenterKey]=[NSValue valueWithMKCoordinate:CLLocationCoordinate2DMake(30.3507772306,114.3144079134)];
    MKCoordinateSpan span=  MKCoordinateRegionMakeWithDistance(CLLocationCoordinate2DMake(30.3507772306,114.3144079134), 1000, 1000).span;
    info[MKLaunchOptionsMapSpanKey]=[NSValue valueWithMKCoordinateSpan:span];
    [MKMapItem openMapsWithItems:@[item2,item1] launchOptions:info];

7、坐标系转换

(1)、wgs84表示gps获取的坐标: 一切正常工作的GPS或GPS芯片,谷歌地球
(2)、gcj02表示经过国测局加密的坐标:高德、腾讯、阿里云、MapABC、51ditu地图、谷歌中国(使用高得数据)、苹果中国(使用高德数据)
(3)、bd09ll表示百度经纬度坐标:百度
(4),bd09mc表示百度墨卡托坐标(伪墨卡托坐标系)

8、POI(地点)搜索、POI详情页展示
周边搜索、地点搜索

9、URI方式第三方地图调用
百度
http://lbsyun.baidu.com/index.php?title=uri/api/web
http://lbsyun.baidu.com/index.php?title=uri/api/ios

高德
http://lbs.amap.com/api/uri-api/guide/travel/route

腾讯地图
http://lbs.qq.com/uri_v1/guide-route.html

你可能感兴趣的:(iOS 地图功能开发研究)