Tag: 地图

中国的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 10.3.2 beta 1为Maps带来了扩展 贝塔

帽子……用于地图 进入iOS版Beta固件的又一个冒险之旅,并带来更多惊喜。 我们中的许多人都认为最后一轮Beta测试是直到下一个iPhone版本之前的最后一轮。 ………事实并非如此: 有什么变化? 好吧…我敢说移动Safari有点简单吗? 是。 另外,地图扩展。 现在,您可以在iOS版Maps中启用和停用Yelp数据。 虽然表面上看起来似乎没什么大不了,但是Cupertino不太可能在Google地图中放置此切换开关,因为他们收到了用户的要求,要求他们清除Yelp地图数据。 相反,它打开了供其他第三方地理空间搜索数据提供者使用的框,以供用户使用或不使用它们的数据。

LocusMaps Mobile SDK简介

上面的应用程序屏幕截图是使用LocusLabs iOS SDK渲染的洛杉矶国际机场的鸟瞰图。 使用我们先进的制图技术和场馆管理系统进行编译,它不仅可以捕获详细的空间几何图形,还可以捕获场馆元数据,例如兴​​趣点和路线选项。 在本文的结尾,我们提供了一些代码片段,以说明使用我们的SDK执行操作(例如显示兴趣点,查找方向或执行搜索)有多么容易。 影片示范 以下视频简要演示了我们的SDK的功能,您将看到: LAX地图的细节和丰富性 停车后识别用户的位置,并通过地图上熟悉的蓝点显示该位置(iBeacon,Apple或Google映射) 提供给登机台的方向以及用户使用它们导航到办公桌的方向 在地图上签到后向用户显示的登机口 用户搜索靠近其门口的餐厅 地图提供了有关景点等景点的详细信息,例如餐厅,包括位置,照片,描述,电话号码,元数据(如菜单)等等 还有几件事 上面视频中未显示的我们SDK的其他一些重要功能包括: 固定地图标记,可让您永久性地突出兴趣点,例如地图上的休息室或登机柜台 推荐的地点和搜索,使用户仅需点击1或2次即可找到预设的兴趣点 强大的搜索功能使用户不仅可以在地图的任何级别上,还可以在其附近区域中按名称,类别或标签找到任何兴趣点 UI和地图自定义,可让您将公司品牌应用于地图本身以及用户界面 开箱即用的几种语言本地化版本 代码样例 我们的本机iOS和Android SDK非常易于使用,仅需几行代码,我们强大而功能丰富的地图可供您使用。 以下各节说明如何使用我们的SDK执行一些最常见的任务。 设定 在使用SDK之前,需要进行一些设置,之后所有任务仅需要几行代码,在某些情况下甚至只需1行! //使用LocusLabs提供的accountId初始化LocusLabs SDK LLLocusLabs.setup()。accountId =“ A11F4Y6SZRXH4X” //创建一个新的LLMapView,注册为其委托并将其添加为子视图 mapView = LLMapView(框架:view.bounds) mapView?.autoresizingMask = [.flexibleWidth,.flexibleHeight] mapView?.delegate =自我 view.addSubview(mapView!) //获取LLVenueDatabase的实例,注册为其委托并加载场所LAX ConventionalDatabase = LLVenueDatabase(mapView:mapView) destinationDatabase.delegate =自我 显示地图 仅需要一个调用“ loadVenueAndMap”即可异步加载地图。 我们的SDK不会自动使地图保持最新状态,还会缓存它们以供离线使用: //加载会场LAX异步 destinationDatabase.loadVenueAndMap(“ lax”){(_venue:LLVenue ?, […]

Cachly 5.0功能:具有轮廓和山体阴影的新离线地图

5.0的主要新功能之一是新的离线地图。 这是对离线地图的完整重建,以优化速度,可读性,漂亮的新样式以及加载轮廓和山体阴影的能力。 您还可以先睹为快,了解我们最新更新的Cachly外观! 除了底图,现在还可以下载这些附加功能。 也可以关闭它们,并在公制和英制之间切换时标高会更新。 您将能够控制在地图上看到的图层。 例如,如果您不想看到步道或3D建筑物,则可以将其关闭。 就像当今许多流行的地图应用程序一样,新的Cachly离线地图可以3D显示建筑物。 我们的离线地图使用Open Street地图,当该数据指定建筑物高度时,它们将以3D呈现。 显示了美国各州以及在开放街道地图中使用相同边界的其他国家的县线。 它们仍以较低的缩放级别显示,这使得查看几乎整个州的县界线成为可能。 离线地图适用于整个世界,并且可以搜索,从而可以快速轻松地找到所需的东西。 地图将每两个月左右更新一次,或者在上一个过程完成后立即更新。 在将来的5.x版本中,当有新版本的地图可用时,您将收到警报。 Cachly中的新离线地图可以作为应用内购买添加。 这样一来,您可以在使用同一App Store帐户使用的所有设备上下载所有地图,轮廓和山体阴影。 新的离线地图一次性购买价格为$ 2.99 *。 这有助于抵消与生成和托管地图相关的服务器成本。 旧版(旧版)地图仍然可用。 *可调整的

MapKit的新功能

在WWDC 2017上,Apple宣布了MapKit(其应用程序映射框架)的一些令人讨厌的新功能。 在Trade Me上使用iOS Property应用程序时,地图几乎贴近我的心,所以我仔细研究了WWDC中MapKit的一些更相关的部分。 除了将图钉的外观更新为更适合现代iOS的外观外,气泡内的字形还可以设置为自定义图片或文字,这对于待售物业搜索非常有效: 这导致我们(我认为)是MapKit中最酷的功能-聚类和使用的动画。 看一下这个: 很有希望看到苹果将这些功能添加到MapKit中,因为它们使它们越来越接近竞争对手(即Google Maps SDK,Mapbox等)。 尽管Trade Me Property在搜索结果和Property Insights地图上都使用Google Maps,但在所有客户端(Web,Android和iOS)上,随着Apple增加了更多功能,iOS上的本机地图框架变得越来越有吸引力。 此外,随着WWDC 2018宣布MapKitJS,有一天可能是Android仍在使用Google Maps的奇怪一幕! 该应用程序中使用的表情符号和此帖子是iOS 11的标准配置。该应用程序中使用的图标和此帖子均为其各自创建者的荣誉: 名词项目的Gregor Cresnar进行的谈判 来自Noun Project的Gregor Cresnar拍卖 来自Noun Project的Gregor Cresnar的价格 来自Noun项目的Arafat Uddin的沙漏

在iOS中使用地图视图运行UI测试

您应该模拟一个位置以确保可靠的测试 创建gpx文件 转到Xcode -> File -> New -> GPX File 看起来像 奥斯陆S 2017-05-31T14:55:37Z 奥斯陆S 2017-05-31T14:55:40Z gpx文件非常强大,因为它允许您指定具有不同移动速度的路线。 提供一个或多个包含纬度/经度对的航点。 如果您提供一个 航点,Xcode将模拟该特定位置。 如果您提供多个路标, Xcode将模拟访问每个航点的路线。 (可选)为每个航路点提供时间元素。 Xcode将插补运动 以每个航点之间经过的时间为基础的速度。 如果您不提供 时间元素,则Xcode将使用固定的速度。 航点必须按时间升序排列。 使用gpx文件 在应用程序目标而非UITests目标中声明gpx文件。 转到您的app scheme -> Run -> Options 转到Simulator -> Debug -> Location -> Custom Location然后选择相同的位置,以确保确定。 它不必相同,但是我看到没有Custom Location ,它在UITests中UITests 让地图= app.maps.element(boundBy:0) let谓词= NSPredicate(格式:“ label CONTAINS’City Hall’”) 让cityHall = […]

给其他用户的指示

我们经常打开地图,以了解如何去认识我们的朋友:当我们加入酒吧时,在步行到休息室后在露天或在您致电商店后喝咖啡后对您钟爱的最新时尚进行评分。 发生这种情况时,仅点击该地图即可知道直接路线,这不是很好吗? 好了,现在您可以在iPhone上了。 而这正是您需要的地方。 点击您的朋友标记以打开上下文。 现在有两个图标,鞋子和路标。 这双鞋向您展示了与朋友的最短途径。 只需点击它们即可查看建议的路线。 您始终可以通过单击刷新图标来刷新建议的路线。 另一方面,路标可让您跳至另一个支持转弯导航的应用程序,例如Google Maps。 我们希望这可以节省您一些时间。 期待您的反馈。 在评论中以一行显示,将电子邮件发送至pathshare@freshbits.ch或在仪表板右下方发送直接消息。 斯特凡,贾罗和托马斯

TomTom Maps的SDK:可识别位置的iOS应用

位置感知应用程序推动了全球许多最受欢迎的数十亿美元独角兽初创公司的参与。 尽管Google Maps最近将其Maps API的费率提高了14倍(请参阅https://nordicapis.com/5-powerful-alternatives-to-google-maps-api/),但仍有许多不同的Maps SDK可供选择例如OpenLayers,MapBox,HERE,Mapfit或TomTom。 在这里,您将了解如何使用TomTom的iOS SDK构建可识别位置的iOS应用程序的基础知识! 尽管TomTom的地图API提供了平铺地图,矢量地图,标记,位置搜索,交通密度,路线查找,但在本博客中,您将专注于一个功能,可用于构建简单的位置感知iOS应用程序:TomTom的地图和搜索模块。 完成后,您的iOS应用程序将在屏幕上显示TomTom的地图软件,为每个关键字搜索启用注释,并提供用于切换如何显示GPS坐标或城市名称的按钮。 初始设置 API密钥 转到TomTom的开发人员门户https://www.tomtommaps.com。 创建一个帐户。 导航到仪表板。 创建一个应用程序。 选择“在线地图”下的所有选项。 创建应用程序后,单击应用程序。 提取您的API密钥! 创建单视图应用程序 打开Xcode。 创建一个单视图应用程序。 调用“ LocationAwareApp”。 记住项目保存的目录。 打开`Info.plist`文件。 在“键”列下,添加“ OnlineMap.Key”。 添加您的API密钥! 可可豆 导航到保存项目的目录。 如果您已经安装了CocoaPods,则运行`pod init`。 打开`Podfile`。 添加以下内容: use_frameworks! platform :ios, ‘10.0’ 目标“地图”多普达“ TomTomOnlineSDKMaps” pod’TomTomOnlineSDKSearch’结束 将这些行保存到“ Podfile”后,运行“ pod install”并观看TomTom的Maps软件安装到您刚创建的单一视图应用程序中! 集成SDK 下一步是集成SDK! 您将对应用程序进行编程,以显示TomTom的地图! 进口货 导航到名为“ ViewController.swift”的文件。 添加以下内容: import TomTomOnlineSDKMaps import […]

使用MapBox GL的iOS预打包的离线矢量地图

我终于找到了一种解决方案,可以为我的地理游戏的iOS版本提供离线矢量地图,这在哪里? 使用MapBox GL。 我想在这里向您展示解决方案。 但首先:我是iOS和Android地理游戏的开发者,下载量超过600万,但我仍将MBTiles栅格地图与旧版MapBox框架结合使用。 真可惜! 这种方法存在一系列问题,例如大文件大小和缺乏样式灵活性,从而给我的用户带来了不太吸引人的游戏体验。 现在是时候彻底改变这种情况了。 输入矢量图块:周围有很多矢量地图框架(例如WhirlyGlobe,Tangram-ES,Mapzen,Nutiteq),我花了一些时间对它们全部进行了全面测试。 但是它们都不符合我的所有要求: 带有小文件大小的预打包离线图块源 开源的 快速渲染 样式灵活 它们中的大多数在渲染矢量图块时均缺乏性能,从而导致丑陋的伪影。 我确实很喜欢WhirlyGlobe中的Globe选项。 最接近我的需求的软件包是MapBox GL 。 唯一缺少的是iOS的离线选项。 但是我找到了一个简单的方法来实现。 使用MapBox Studio Classic创建矢量地图源并将其导出为MBTiles。 使用mb-util将MBTiles文件转换为单个pbf文件。 压缩它。 将这些CocoaPods添加到您的Podfile中: MapBox-iOS-SDK,GCDWebServer,objective-zip 创建一个GCDWebServer实例,通过NSBundle中的一个zip文件提供PBF矢量地图文件。 使用指向您本地Web服务器的自定义样式json加载MGLMapView 。 瞧! 离线矢量地图具有灵活的样式,小的文件大小和令人难以置信的性能。 您可以在Github jaysquared / mapbox-gl-ios-offline-example上找到一个示例项目。 您可以下载我的地理游戏 在哪里? 在iTunes上 。 包括矢量图。

Swift中的高阶函数:Filter,Map,Reduce,flatmap,compactMap

据我了解,高阶函数是将另一个函数/闭包作为参数并返回它的函数。 我将首先尝试解释这一点。 考虑以下代码,这将使您了解什么是高阶函数: 将函数传递给另一个函数: 前两个方法的类型为(Double,Double)->Double 。 第一个接受两个double值并返回它们的和。 第二个返回这两个double值的乘积。 第三种方法是接受三个参数的高阶函数。 两个double值和一个类型为(Double,Double)->Double的函数。 看一下方法调用。 您将了解高阶函数的工作原理。 从另一个函数返回函数: 在这里,函数doArithmeticOperation(isMultiply:)是一个高阶函数,它返回类型为(Double,Double)->Double的函数。 函数和闭包是迅速的一等成员。 它们可以保存到变量中并传递。 因此,此处,基于传递给doArithmeticOperation(isMultiply:)函数的布尔值,它返回执行该操作的函数。 operationToPerform_1是为您执行乘法的函数。 operationToPerform_2是为您执行添加operationToPerform_2的函数。 只需看一下函数定义和调用即可。 您将了解所有内容。 当然,您可以通过许多不同的方式来做同样的事情。 可能是您可以使用闭包代替函数。 您可以创建一个算术运算枚举并简化该函数。 我只是想解释什么是高阶函数。 这是swift中使用的一些高阶函数。 如果我正确理解,以下函数将闭包用作参数。 您可以使用这些函数对Swift集合类型(例如Array, set或Dictionary 。 在进行以下操作之前,您应该了解什么是闭包。 阅读我关于闭包的文章 地图 使用 map 遍历一个集合,并对集合中的每个元素应用相同的操作。 map函数返回一个数组,其中包含对每个项目应用映射或转换函数的结果。 映射数组: 假设我们有一个整数数组: 让arrayOfInt = [2,3,4,5,4,7,2] 如果我们必须将每个数字乘以10怎么办? 我们通常使用for-in循环遍历每个数字,操作正确吗? var newArr:[Int] = [] 表示arrayOfInt中的值{newArr.append(value * 10)} print(newArr)//打印[20,30,40,50,40,70,20] 此代码看起来很冗长。 有一些样板代码,例如创建新的数组,可以使用map来避免。 如果我们尝试映射Int数组,则快速自动完成功能将显示以下内容。 […]