User Location:
MapViews 用Core Location 来保存用户的路径并在地图上用一个蓝色的点表示出来。 你可以打开:mapView.showUserLocation = YES;
如果地图跟踪的是用户的未知,你可以通过只读的属性userLcoationVisible 来检测用户当前的位置是不是可见的。如果是YES,就是可见的。
你可以首先设定 showsUserLocation 为 YES来得到用户当前指定的坐标。然后访问userLocation 属性。这个属性返回一个MKUserLocation的实例变量。 MKUserLocation 是一个对象,有一个属性叫做location(CLLocation 类型)。 一个CLLocation 包含一个coordinate属性指向一个坐标的集合,所有的这些意味着你可以得到实际的坐标从MKUserLocation对象里:下属那个:
CLLocationCoordinae2D coords = mapView.userLocation.location.coordinate;
Coordinate Regions
如果你不告诉要显示什么或者找出世界上的当前某个具体的位置,那么map view 就不那么smart了。 通过map view, 做到这些工作的关键是 MKCoordinateRegion, 一个结构包含两部分数据,同时也定义了在map view种要显示的位置。
第一个成员是 center 。 这是另外一个结构类型是:CLLocationCoordinate2D, 一个CLLocationCoordinate2D包含两个浮点数值,经度和纬度。 这个点代表着map view的中间。
第二个叫做span。 是MKCoordinateSpan类型的结构。 它有两个程序叫做 latitudeDelta and longitudeDelta。 这两个程序被用来设定地图的缩放级别——在center周围应该显示多大的区域。
这些值代表经度和纬度的距离。如果latitudeDelta and longitudeDelta是很小的,地图将会被缩放的十分密集,如果大的话,地图将会被放大并显示一个较大的区域。
Convert degree to distance
每一个纬度代表69英里,或者是111km,不论你在那里。这样就使作为MKCoordinateSpan的参数的 latitudeDelta被传递的时候更容易计算。
经度所代表的距离就不是那么容易去计算了。为了做同样的计算,你必须使用纬度,因为它代表的距离取决与你在的地方相对与赤道的距离。 为了计算经度所代表的距离,你必须执行一些数学计算。 实际上apple已经提供了一些方法做这样的计算:
MKCoordinateRegionmakeWithDistance() 创建一个region。 你提供坐标作为center , 距离(m)为经度和纬度的span。 例如创建一个region 来显示指定区域位置 1km。 通过调用 CLLocationCoordinate2D
MKCoordinateRegion viewRegion = MKCoordinateRegionMakeWithDistance(center, 2000, 2000);
为了显示每个边周围的1km, 我们必须指定2000m 为每个span:1000m向左,1000m向右,1000m向上,1000m向下。 调用之后,viewRegion 将会包含一个格式化的MKCoordinateRegion,当然你可以使用了。剩下的就是比率转换问题了。
横总比:
MKMapView 类优一个实例方法将会适应一个坐标区域来匹配map view的横纵比例。 regionThatFits:
使用的时候你只需在你创建的坐标区域里面传递,同时它会返回一个新的坐标区域来适应map view的比例。
MKCoordinateRegion adjustedRegion = [mapView regionThatFits:viewRegion[;
设定区域显示:
一旦创建好坐标区域,你可以告诉map view 来显示通过setRegion:animated:方法创建的区域。如果你传递YES给第二个参数,mapView将会缩放移动等。
MKCoordinateRegion viewRegion = MKCoordinateRegionMakeWithDistance(center,2000,2000);
MKCoordinateRegion adjustedRegion = [mapView regionThatFits:viewRegion];
[mapView setRegion:adjustedRegion animated:YES];
分享到:
相关推荐
实际应用中可能还需要考虑其他因素,如路线规划、多个地点选择、离线地图支持等,但这些都需要更深入的MapKit知识和额外的第三方库支持。如果你对这些感兴趣,可以查看GitHub上的`MapKitTest`项目,该项目提供了更...
首先,我们需要了解MapKit的基本概念。MapKit是Apple提供的一个框架,它与Google Maps服务相结合,提供了一个用于显示地图、进行地理定位、路径规划等功能的平台。开发者可以通过MapKit接口来创建地图视图...
4. **MKAnnotation协议**:MapKit中的MKAnnotation协议定义了地图标注所需的基本属性,如坐标、标题和副标题。开发者需要创建一个遵守该协议的自定义类,用于封装从Google Places API获取的地点信息。 5. **地图...
上述代码展示了如何创建一个基本的MapKit应用,包括显示地图、获取用户位置、显示大头针以及显示气泡。 6. **JXMapDemo**: 提供的`JXMapDemo`可能是一个示例项目,包含了以上功能的具体实现。你可以下载并运行此...
首先,MapKit框架是iOS SDK中的一个核心组件,它提供了与地图交互的基本工具。通过MapKit,开发者可以创建自定义的地图视图,设置地图类型(如卫星、标准或混合视图),添加标注、覆盖物,以及实现平移、缩放等操作...
以下是关于MapKit的一些关键知识点: 1. **MapKit基础**:首先,你需要在项目中导入MapKit库,然后创建一个MKMapView对象,将其添加到视图层级中。通过设置mapView的delegate属性,你可以监听地图的交互事件。 2. ...
不过,MapKit的基本原理和API在不同iOS版本中变化不大,因此源码仍然具有参考价值。通过分析和运行这个源码,学生可以学习到如何将MapKit与用户交互相结合,尤其是实现地图上的对象拖放操作,这对于创建交互式地图...
首先,地图路径规划的基本概念是找到两点之间的最短或最优路径。这通常通过Dijkstra算法、A*搜索算法等图论方法实现。Dijkstra算法是一种基于贪心策略的全局最短路径算法,适用于所有边非负权重的图;而A*算法则在...
"地图用大头针标注,定位,查看"这个标题所涵盖的知识点主要涉及iOS的MapKit框架,它是苹果为开发者提供的用于集成地图服务的API。下面将详细介绍如何在iOS应用中实现地图定位、大头针标注以及自定义大头针的操作。 ...
在iOS应用开发中,地图功能是非常常见且重要的一个部分,特别是在旅游、导航或者生活服务类...它涵盖了MapKit的基本用法、自定义AnnotationView、用户交互处理等多个知识点,对于iOS开发者来说是一个很好的学习资源。
- MapKit的基本操作。 - 地理编码和反地理编码的实现。 19. **哇!陀螺仪和加速度计!(Chapter 19: Whee! Gyro and Accelerometer!)** - **章节概述**:介绍了如何使用传感器数据。 - **知识点**: - 陀螺仪...
综上所述,"ios-地图标注.zip"中的资源可能涵盖了以上这些知识点,通过学习,开发者可以掌握如何在iOS应用中实现地图标注,从而为用户提供更直观、丰富的地图体验。视频教程通常会通过实际操作演示这些步骤,帮助...
理解MapKit的基本用法,如`MKMapView`的配置、`MKAnnotation`的使用(用于标记地理位置)以及`MKOverlay`的实现(用于覆盖自定义内容),是解析这个项目的关键。 其次,为了实现3D效果,源码可能会利用OpenGL ES...
4. 理解MapKit框架的基本概念,尽管这个Demo使用的是Bing Maps,但MapKit的知识可以帮助理解地图服务的基本原理。 5. 了解如何在iOS项目中集成第三方库。 通过研究和运行这个Demo,开发者不仅可以学习到如何在iOS...
本教程将详细讲解如何在iPhone应用中利用系统内置的地图程序实现导航功能,主要涉及的知识点包括:URL Scheme、MapKit框架和Google Maps API。 首先,我们来了解URL Scheme。URL Scheme是一种允许应用程序之间互相...
综合以上信息,这个项目的关键知识点包括: 1. iOS应用开发:使用Swift或Objective-C编程,遵循iOS设计原则。 2. MapKit框架:集成Apple的MapKit,实现地图展示、标注、搜索等功能。 3. 百度地图SDK:利用其提供的...
以下是对这些知识点的详细解释: 1. **MapView**: MapView是Apple的MapKit框架中的核心类,用于在应用中展示地图。它继承自UIView,允许开发者将地图集成到用户界面中。通过设置MapView的代理,可以实现各种交互...