Tag: google maps

Google标记群集

Google iOS库提供了基于网格的聚类技术,该技术可将地图划分为正方形并将标记(注释)分​​组到每个正方形网格中。它提供了摘要标记,可让您大致了解缩放级别下的“下方”。 在这里,我参考Google官方API编写此博客。 在本博客中,将讨论一个演示,该演示具有Google地图集群的示例实现。 逐步会看到并学习实现。 第1步:最初,您应该在项目文件夹中包含pod(终端命令:pod init)文件,然后在同一文件中添加Google-Maps-iOS-Utils Pod。 安装Pod之后,打开生成的.xcworkspace扩展文件。 步骤2:以这种方式初始打开ViewController并覆盖方法 私人var mapView:GMSMapView! 私有var clusterManager:GMUClusterManager! 覆盖func loadView(){ let camera = GMSCameraPosition.camera(withLatitude:37.4220,经度:-122.0841,缩放:17) mapView = GMSMapView.map(withFrame:CGRect.zero,camera:camera) self.view = mapView } 步骤3:在viewDidLoad方法内部添加代码,如下所示 覆盖func viewDidLoad(){ super.viewDidLoad() //使用默认的图标生成器和渲染器设置集群管理器。 让iconGenerator = GMUDefaultClusterIconGenerator() let算法= GMUNonHierarchicalDistanceBasedAlgorithm() 让渲染器= GMUDefaultClusterRenderer(mapView:mapView,clusterIconGenerator:iconGenerator) clusterManager = GMUClusterManager(地图:mapView,算法:算法,渲染器:渲染器) //生成随机项并将其添加到集群管理器。 generateClusterItems() clusterManager.cluster() //注册self来侦听GMUClusterManagerDelegate和GMSMapViewDelegate事件。 clusterManager.setDelegate(self,mapDelegate:self) } 私人功能generateClusterItems(){ 让范围= 0.2 用于1 … kClusterItemCount中的索引{ 令lat […]

将您带入地图:iOS逐步介绍Google Maps

该博客旨在逐步详细地介绍如何在iOS应用上设置Google Maps。 对于此博客,任务是在The Flatiron School放置一个Google Maps标记,以便每个人都知道我在哪里学习。 第1步-安装Cocoapods Google Maps SDK可作为Cocoapods窗格使用。 当您听到术语Cocoapods pod和SDK时,有些人可能会像这样this。 不用担心,那很好。 不久之前,我的脸也一样。 让我们首先来看一个简单的SDK。 SDK是指软件开发人员套件。 Cocoapods是管理Xcode项目库依赖关系的工具。 换句话说,Cocoapods是使我们的生活更容易开发软件的工具。 如果尚未安装Cocoapods,则只需转到终端(按Command + Space并编写Terminal)。 在那里,输入: 须藤宝石安装cocoapods 等待安装完成,然后输入“ pod”。 如果看到此图片,恭喜! 您已经安装了Cocoapods。 如果您对此还有其他疑问,请访问https://cocoapods.org/ 第2步-创建Podfile 首先在您的Xcode中创建一个项目。 为了撰写本博客,我们将创建一个名为“ Google Maps”的单一视图项目。 然后,打开终端并转到包含您的项目的目录。 在那里,输入“ pod init”。 这将创建一个名为“ Podfile”的pod文件。 下一步是编辑该文件以添加Google Maps依赖项。 我们将使用文本编辑器打开文件来完成此操作。 我使用Atom(https://atom.io/)。 如果您不这样做,我强烈建议您开始使用它。 如果您有Atom,只需在终端中编写“ atom Podfile”,pod文件将在Atom中为我们的版本打开。 在文件中添加“ pod’GoogleMaps’”并保存(Ctrl + S)。 您的文件应如下所示: 最后,我们准备在项目中安装Podfile。 为此,我们只需键入“ pod […]

使用Google Maps样式向导自定义MapKit的MKMapView

定制MKMapView外观并不是那么容易。 在这里,我将告诉您如何使用代码示例完全自定义它。 上周,我一直在尝试自定义MKMapView,但这是不可能的。 如果您使用MapKit已有一段时间,您可能会知道,当需要叠加层和折线时,它很棒,并且它具有许多有用且非常有趣的功能。 但是事实是它不是非常可定制的。 我需要使地图看起来与使用Google Maps构建的Uber相似,并且我不想更改为Google Maps,因为我有很多事情是使用MapKit完成的。 深度重构并不是一个好的选择。 经过大量搜索和阅读StackOverflow线程后,我提供了一个解决方案。 瓷砖覆盖 如果您以前从未听说过瓷砖叠加层,可以告诉您它们可以完全自定义您的地图。 该机制很简单,每当地图需要显示“平铺”(瓷砖上的一小块区域)时,它都会向服务器请求该图块的图像。 称为“平铺服务器”的服务器将返回图块图像,并将其显示在地图上。 简单。 这是一些免费的磁贴服务器的列表。 在iOS中,可以使用MKTileOverlay完成此操作。 磁贴叠加层需要一个URL。 该URL遵循以下架构: https://somecoolserver.com/path?x= {x} &y = {y} &z = {z} 看到那些参数了吗? {x},{y}和{z}? {x}和{y}参数将由地图视图使用其所请求的图块的坐标填充,而{z}将由缩放级别填充。 Google样式向导 Google的Google Map Styling Wizard做得非常出色。 我必须认识它。 它具有简单的界面,功能绝对强大。 使用此向导,您可以创建可从Google Maps SDK导入的配置JSON,或者获取可显示静态地图(图像)的URL。 但是在这一点上,我面临着一个大问题。 好的,这很好,我可以根据需要自定义地图,但是如何将其导入到MKMapView中呢? 我以为我必须将该JSON文件转换为图块叠加服务器URL架构。 该解决方案随StackOverflow一起提供。 请参阅此http://stackoverflow.com/questions/29692737/customizing-google-map-tile-server-url。 该线程的末尾是用javascript编写的简短脚本。 所以我首先要做的就是将该函数复制到一个js文件中,并使用node.js执行它。 有效! 但这不是很方便。 想象另一个开发人员必须做同样的事情。 每当他想对地图进行任何更改时,他都将需要执行该node.js脚本。 最终的解决方案 最后,我翻译了该脚本以进行快速处理,并将其作为cocoapod上传。 该吊舱称为MapKitGoogleStyler,您可以在以下位置找到它:https://github.com/fmo91/MapKitGoogleStyler。 将其嵌入到项目中具有一些优势,例如将json保存在直接在项目中的文件中。 […]

Swift GoogleMap自定义信息窗口

GoogleMap GMSMarker本身有提供资讯视窗设定简单的内容 当你想要在资讯视窗中加入更多资讯的时候就必须做一个字定义的资讯视窗 所以这时候Google SDK也有提供一个delegate 只要把你做好的InffWindow做好再回传给Delegate就好了 但如果你想要在视窗里面加一些功能可以点击的话就没有办法这样子做成 根据我查到的结果,在iOS SDK他实际上显示在画面上的东西其实是一张图片 所以你原本加好的按钮就无法点击,在Android中有提供可以关掉这种资讯视窗的方法 但iOS就是没有…所以我们现在必须把我们做出来的视窗直接添加SubView在大头针上 所以我把实现infoWindow放在GoogleMap点击大头针的Delegate中 参考资料:自定义和交互式googlemaps(IOS SDK)信息窗口

带有Cocoapods和react-native-maps的Google Map-iOS

最近几天,当我试图将react-native-maps集成到用于传输连接Bileto的新移动应用程序中时,我正在寻找将其与Cocoapods集成的方法。 不幸的是,好的和新的教程很少。 通常,您会发现大约一年的文章,因此react-native-maps项目中只有READMEright。 这就是为什么我决定写两篇文章将Android和iOS上的Google Maps集成在一起的原因。 这是iOS部分。 让我们从头开始。 我们将使用React Native命令行工具创建一个新项目。 如果您从未安装过,只​​需输入npm i -g react-native-cli 。 然后导航到我们要在其中创建项目的文件夹。 要生成新的一种类型的react-native init MapExample 。 此命令将创建一个新的全新安装的React Native应用程序。 现在,只需转到项目文件夹。 就我而言,是cd MapExample 。 然后在这里运行react-native run-ios命令。 此命令将启动应用程序构建,并在模拟器上首次运行它。 我们将关闭模拟器以进行下一步… 现在是时候安装react-native-maps了。 使用yarn add-react-native-maps或npm install react-native-maps命令运行地图软件包安装。 安装完成后, 您将无法借助react-native link react-native-maps 链接软件包。 整个软件包的依赖项将通过Cocoapods安装。 如果您没有安装它们,只需键入gem install cocoapods (您可能需要添加sudo权限)。 首先,我们需要进入ios文件夹cd ios 。 使用pod init初始化cocoapods及其初始文件是必要的。 现在,使用收藏夹编辑器打开Podfile cocoapods文件。 对我来说,它是VSCode,所以code Podfile 。 您看到的文件应如下所示。 […]

教程:使用Swift 4进行地理编码

使用iOS本机SDK或Google Maps API将地址转换为位置点(纬度,经度)的指南。 地理编码是将邮政地址描述转换为地球表面某个位置(数字坐标的空间表示)的计算过程。 维基百科 在iOS上实现地理编码功能的一种免费,简便的方法是使用CoreLocation和CLGeocoder类。 CLGeocoder类提供用于在坐标(指定为纬度和经度)和该坐标的用户友好表示之间进行转换的服务。 坐标的用户友好表示形式通常包括与给定位置相对应的街道,城市,州和国家/地区信息,但它也可能包含相关的兴趣点,地标或其他标识信息。 有时候,简单/免费/快速的方法不一定是做某事的最佳方法。 在线上有很多地理编码API服务 。 其中一些是免费的,另一些是免费的,例如Google Maps 。 在本教程中,我们将实现并测试iOS本机地理编码和Google Maps地理编码服务以及世界各地的地址列表。 让我们说明一下,在创建我们的项目之前,我们需要做一些简单的事情: 1.1在Xcode上创建一个新项目。 打开Xcode,然后单击文件>新建>项目。 选择单视图应用程序作为模板,然后单击“下一步”并根据需要命名该项目(在我的情况下为BattleOfGeocoding )。 1.2安装CocoaPods。 现在,我们需要设置CocoaPods来管理Xcode项目的库依赖关系。 如果您以前从未使用过它: https://guides.cocoapods.org/using/getting-started.html 此时,我们需要在根文件夹上添加Podfile。 在Github上查看示例源代码。 教程:使用AI和Swift 4。 在iOS上建立自然而丰富的对话体验。 教程:创建一个iOS Swift聊天机器人。 如何设计和创建您的第一个天气聊天机器人应用程序。

Swift 3.0 Google Maps API

打开终端类型后: cd“ projectDirectoryName” 然后按Enter。 通过同时按住命令和空格以启动查找器,可以轻松完成此操作。 然后键入项目名称,并将项目文件夹拖到终端中,以便它自动输入项目目录名称。 之后,您可以使用以下命令创建Pod文件: 荚初始化 在XCode编辑器中打开pod文件,并添加以下代码行: 目标“ YOUR_APPLICATION_TARGET_NAME_HERE” pod’GoogleMaps’ pod“ GooglePlaces” 结束 之后,保存pod文件,并返回到终端以及项目上的目录位置。 然后运行命令: 吊舱安装 吊舱安装完成后,关闭XCode并恢复与.xcworkspace的会话以进行项目中的所有持续开发。 第2步:获取Google Maps API密钥并添加到应用程序 这是获取Google Maps API密钥的链接:https://developers.google.com/maps 获取API密钥后,打开XCode应用程序并导航到AppDelegate.swift添加: 导入GoogleMaps 将以下内容添加到application(_:didFinishLaunchingWithOptions :)方法中: GMSServices.provideAPIKey(“ YOUR_API_KEY ”) 对于places API: GMSPlacesClient.provideAPIKey(“ YOUR_API_KEY ”) 在ViewController中添加以下内容: 导入UIKit 导入GoogleMaps 类ViewController:UIViewController { 覆盖func viewDidLoad(){ super.viewDidLoad() //创建一个GMSCameraPosition来告诉地图显示 //在缩放级别6处协调-33.86,151.20。 let camera = GMSCameraPosition.camera(withLatitude:-33.86,经度:151.20,缩放:6.0) 让mapView = GMSMapView.map(withFrame:CGRect.zero,camera:camera) mapView.isMyLocationEnabled […]

如何在iOS的React Native中使用react-native-maps设置谷歌地图

我发现很难在React Native中用react-native-maps实现google maps。 他们提供的用于安装的文档很难理解,并且实现起来有些棘手。 因此,我想到了分享在ios中实现Google地图的方式。 默认情况下,当您在ios中使用react-native-maps时,Apple Map正在加载。 因此,如果您不想使用Google地图,可以使用我的方法。 即使您以前在ios开发方面没有任何经验,这种方法也很容易实现。 在这种方法中,我们使用椰壳足纲。 Cocoapods是Swift和Objective-C的依赖项管理器。 如果您没有安装cocoapods,则应该安装它。 您可以通过以下方式轻松安装它: 须藤宝石安装cocoapods 现在转到您的react native项目的根文件夹,并通过以下方式安装react-native-maps: npm install react-native-maps –save 现在在您的react-native-project中打开ios文件夹并设置您的podfile。 要初始化pod文件运行, pod init 然后在编辑器中打开Podfile,例如vim,nano,atom等,并粘贴给定的数据。 确保将“ app_name ”替换为应用程序的名称 现在回到终端,您可以使用以下命令安装Podfile中指定的依赖项 pod install 现在,使用以下命令在您的xcode中打开项目 open projectname.xcworkspace 从中拖动文件夹AirGoogleMaps 是我们的project / node_modules / react-native-maps / lib / ios / AirGoogleMaps / 进入您的xcode项目。 使用项目名称打开文件夹中的AppDelegate.m文件并添加 @import GoogleMaps; 在“ @implementation AppDelegate ”之前和函数(BOOL)中:(UIApplication […]

交互式InfoWindow GoogleMaps iOS

Google Maps iOS API不支持交互式InfoWindows。 以下教程显示了如何通过向InfoWindow添加按钮来实现此功能。 使用GoogleMaps设置一个简单的应用程序 首先在XCode中创建一个单一视图应用程序。 将应用程序命名为GM-CustomInfoWindow-Button。 不要忘记也输入组织标识符。 XCode将为您生成一个新项目。 要使用GoogleMaps,您首先需要导入其库。 使用CocoaPods可以轻松完成此操作。 查看他们的站点以了解有关安装的更多信息。 使用Atom或记事本创建一个新文件并编写以下内容。 将文件保存在主项目目录中,并将其命名为Podfile。 然后在终端中,导航到您的主项目目录并运行pod install 。 CococaPods将为您安装所有必需的依赖项,并在您的主项目目录中创建一个工作区文件。 安装后,通过工作区文件打开您的应用程序。 为了使用GoogleMaps,您需要一个API密钥。 如果您不熟悉,那么绝对应该看看此页面 。 要使用GoogleMaps,您首先需要在Google的API控制台中注册您的应用程序,然后将API密钥复制到该应用程序中。 因此,首先通过单击导航区域上的应用程序名称导航到应用程序的常规设置。 在“常规”标签中,您会找到捆绑包标识符。 复制它并将其粘贴到API控制台中的API密钥的捆绑包标识符列表中。 这样,您已经为该特定的API密钥注册了应用程序。 接下来,您需要告诉您的应用程序必须使用哪个API密钥。 因此,转到AppDelegate类并import GoogleMaps 。 在方法func application(_ application: UIApplication, didFinishLaunchingWithOptions:….)用控制台中的API密钥替换“ YOUR-API-KEY”字符串(如下所示)。 下一步是创建mapView。 首先,首先更改您的ViewController文件。 首先,导入import GoogleMaps并实现GMSMapDelegate 。 import UIKit import GoogleMaps class ViewController: UIViewController, GMSMapViewDelegate { } 现在,您必须将ViewController连接到情节提要中的视图。 使用助手编辑器,通过创建一个名为mapView的IBOutlet并将故事板中ViewController的视图与ViewController文件连接起来,并将其类型更改为GMSMapView […]

GMSMapView跟踪模式标题

在我的应用程序中,我正在使用GMSMapView ,我想更改跟踪模式。 在iOS MapKit中,我可以将跟踪模式更改为MKUserTrackingModeFollowWithHeading ,但不知道如何在GMSMapView对其进行更改。 在Google Maps应用中,在myLocationButton第二次触摸之后,它正在工作。 可能吗?