在iOS中进行Mapbox地图开发杂谈

本文分享了在iOS应用中集成Mapbox地图的经验,包括Mapbox SDK与苹果地图的对比,如地图类型设置、坐标系转换、Annotation View功能、拖动功能的实现、绘制线段的方法,以及代码封装的考虑。文中详细探讨了Mapbox SDK在实际使用中的一些特点和技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    最近因项目需要,在app中要集成Mapbox,并且要能与苹果地图切换使用。从最早认识Mapbox到最终集成完毕,中间有一些断断续续,但总的时间也不算短了,关于这方面的资料其实是比较少的,能参考的基本都来自官方文档和Demo,在我的app中涉及到了地图基本操作、自定义annotation及行为、画线等功能,在这里将一些使用心得记录下来吧。

 

一、概述

    Mapbox是一个支持多种平台及SDK开发(Web/iOS/Android)的地图,能显示全球地图数据,你可以简单的将它想象成类似Google Map那样的地图,也同样具备很丰富的多种功能,并且很重要的一点,它在全球都能访问的到!

   官方网址:https://www.mapbox.com/

   我做的是iOS SDK开发,其开发页面是:https://docs.mapbox.com/ios/maps/overview/

   基本的集成方法、文档及Demo请参考以上页面,而且目前为止我能参考的所有资料几乎也都只有这些。

 

二、Mapbox SDK与苹果地图的一些对比

 

  1. 基本类型定义(MKMapView、MGLMapView)

       Mapbox中的地图类名为MGLMapView,与苹果地图MKMapView中基本的大部分属性是类似的,或通过名字能很快知道其含义,但具体看还是有自己的特点,首先看下设置地图类型:

     MKMapView中设置很简单,通过设置mapType属性(枚举类型)就可以了,而MGLMapView中的方式是,设置styleURL中对应的网址,常用的对应苹果地图中的标准/卫星/混合类型都已经在SDK中定义好了,比如卫星图对应的是:https://docs.mapbox.com/ios/maps/examples/satellite-style,更多的可以在SDK中找到。这样做还有一个好处,可以方便的指定在Mapbox Studio中自己做的地图!

      又比如设置当前可见区域中所用到的参数类型MGLCoordinateBounds,不同于MKMapView中的区域定义,它是用south west及north east的坐标来定义一个地图区域,这样的定义还是比较特别的,但也是好理解的,所以就得自己来计算一些需要的值。 

typedef struct __attribute__((objc_boxable)) MGLCoordinateBounds {
    /** Coordinate at the southwest corner. */
    CLLocationCoordinate2D sw;
    /** Coordinate at the northeast corner. */
    CLLocationCoordinate2D ne;
} MGLCoordinateBounds;

    另外Mapbox地图默认是有点类似2.5D的视觉效果,双指同时上下滑动可调整视角的俯瞰角度。

 

2. 坐标系

     除了具体的类型/函数定义外,另外一个很重要的问题就是:坐标系。通过与Mapbox支持团队的邮件确认,在大陆是使用GCJ02坐标,也就是俗称的火星坐标,其余地区都使用WGS84坐标,所以我们就要自己作这一转换&#x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值