标签: google-maps-sdk-ios

如何在iOS中的Google地图上添加按钮?

我是iOS编程新手,我已经下载了适用于iOS的谷歌地图sdk,并按照其网站上的说明进行操作(如此链接https://developers.google.com/maps/documentation/ios/start所示 )并且能够在我的应用程序中获取地图.

现在,我尝试在谷歌地图底部的屏幕上添加一个按钮,为用户提供返回上一屏幕的选项.

我只知道UIButton是UIView的子类,我们可以通过使它成为该类的子视图来使一个按钮出现在视图上.以前iOS默认使用谷歌地图MKMapView,我已经在互联网上的书籍中看到了一些示例,显示了按钮或文本框出现在地图上的应用程序的屏幕截图.但现在只需拖动界面构建器中的按钮对谷歌地图的SDK没有帮助.

这是我的代码:

ViewController.h

#import <UIKit/UIKit.h>
#import <MapKit/MapKit.h>
#import <GoogleMaps/GoogleMaps.h>


@interface ViewController : UIViewController 

@property (weak, nonatomic) IBOutlet UIButton *btn;


@end
Run Code Online (Sandbox Code Playgroud)

ViewController.m

#import "ViewController.h"
#import <MapKit/MapKit.h>
#import <GoogleMaps/GoogleMaps.h>
#import <CoreLocation/CoreLocation.h>


@interface ViewController ()

@end

@implementation ViewController
{
    GMSMapView *mapView_;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (void)loadView …
Run Code Online (Sandbox Code Playgroud)

iphone cocoa-touch interface-builder ios google-maps-sdk-ios

13
推荐指数
1
解决办法
2万
查看次数

Google Maps iOS SDK,获取用户的当前位置

对于我的iOS应用程序(iOS7内置),我需要在应用程序加载时显示用户的当前位置Google Maps iOS SDK.我正在使用.我正在关注 谷歌地图 但我无法理解.如果你走过这条路,请帮忙.

objective-c ios google-maps-sdk-ios

13
推荐指数
2
解决办法
5万
查看次数

Google Maps iOS SDK - 在GMSMapView上添加UIView/UIButton

我正在使用带有故事板的Google Maps iOS SDK开发iOS应用程序.在我的主视图控制器"viewDidLoad"中,我实现了一个GMSMapView并显示它

self.view = mapView_;
Run Code Online (Sandbox Code Playgroud)

一切都很好.现在我想在地图上添加一个UIView或UIButton,比如myLocation按钮样式.有什么解决方案可以添加它并通过故事板使用它吗?我已经通过代码在地图上叠加了对象,但我真的需要自动布局,所以通过Storyboard管理它会很好.谢谢.

overlay ios google-maps-sdk-ios

12
推荐指数
2
解决办法
1万
查看次数

在Google Maps SDK iOS中为所有其他标记设置标记

我正在尝试放置一个标记,但是当我这样做时,这个标记被放置在之前设置的一些标记之后(以及其他一些标记).我想将它设置在所有标记上,但我没有找到任何属性(如z-index)来实现这一点.

这是代码的一部分,我将标记设置在其他代码之后:

GMSMarker *marker = [[GMSMarker alloc] init];
marker.animated=YES;
marker.position = CLLocationCoordinate2DMake(lat, lon);
marker.map = mapView_;
Run Code Online (Sandbox Code Playgroud)

这就是结果:

绿色标记放在一些蓝色标记后面和其他蓝色标记上

是否有任何属性或方法将绿色标记放在所有蓝色标记上?我正在使用Google Maps SDK 1.3.0版.

marker ios google-maps-sdk-ios

12
推荐指数
1
解决办法
9274
查看次数

使用未解析的标识符'GMSServices'

我使用的是Xcode 7.1,部署目标是iOS 9.1.该应用程序是"AreaCalculator",它是用Swift编写的.我做了以下设置框架并导入地图:

  1. $ sudo gem install cocoapods

  2. 在"AreaCalculator"下触摸Podfile

  3. 在Podfile中我把:

    source 'https://github.com/CocoaPods/Specs.git'
    platform :ios, '9.1'
    pod 'GoogleMaps'
    
    Run Code Online (Sandbox Code Playgroud)
  4. $ pod安装

    在终端:

    [!]无法加载插件的 /Library/Ruby/Gems/2.0.0/gems/cocoapods-try-release-fix-0.1.2 规范更新本地规范存储库分析依赖关系下载依赖关系安装GoogleMaps(1.10.5)生成Pods项目集成客户端项目

    [!]请关闭所有当前的Xcode会话,并 AreaCalculator.xcworkspace从现在开始用于此项目.发送统计信息Pod安装完成!Podfile中有1个依赖项,安装了1个pod.

  5. 之后,我在Navigator中选择了AreaCalculator文件夹并选择File\New\File ...,然后选择iOS\Source\Objective-C File模板并创建一个Bridging文件:
    "AreaCalculator-Bridging-Header.h".

    • "#import GoogleMaps/GoogleMaps.h
  6. 然后我在"Link Binary With Libraries"中添加"GoogleMaps.framework"."GoogleMaps.framwork"和""GoogleMaps.bundle"都位于Pods文件夹中.

  7. 完成所有这些后,在AppDelegate.swift中,我把:

    import UIKit
    
    @UIApplicationMain
    class AppDelegate: UIResponder, UIApplicationDelegate {
    
        var window: UIWindow?
        let googleMapsApiKey = "MY_GOOGLE_IOS_API_KEY"
    
        func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
            // Override point for customization after application launch.
            GMSServices.provideAPIKey(googleMapsApiKey)
            return true
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)

但是,编译器向我显示错误"使用未解析的标识符'GMSServices'".

我不知道我哪里做错了?有人可以帮忙吗?

谢谢!

ios google-maps-sdk-ios

12
推荐指数
5
解决办法
5590
查看次数

如何移动标记以及在iOS中移动Google Map?

我在特定位置显示标记,并在Google地图上的地址标签中显示当前地址.

现在,我想通过移动谷歌地图来改变位置,但问题是当我移动地图时,我应该同时移动标记和地图,我应该在地址标签中显示该位置的地址.

我怎样才能做到这一点?

我试过这个:

let destinationMarker = GMSMarker(position: self.destinationLocation.coordinate)

let image = UIImage(named:"sourcemarker")
destinationMarker.icon = image
destinationMarker.draggable = true
destinationMarker.map = self.viewMap
//viewMap.selectedMarker = destinationMarker
destinationMarker.title = "hi"
destinationMarker.userData = "changedestination"

func mapView(mapView: GMSMapView, didEndDraggingMarker marker: GMSMarker)
{
    if marker.userData as! String == "changedestination"
    {
        self.destinationLocation = CLLocation(latitude: marker.position.latitude, longitude: marker.position.longitude)
        self.destinationCoordinate = self.destinationLocation.coordinate
        //getAddressFromLatLong(destinationCoordinate)
    }
}
Run Code Online (Sandbox Code Playgroud)

google-maps ios google-maps-sdk-ios gmsmapview swift

12
推荐指数
3
解决办法
2万
查看次数

我如何在谷歌地图ios中动画GMSPolyline

我正在使用谷歌地图SDK,我必须在用户移动时绘制折线,目前它只是动画标记,在针移动到特定位置之前绘制的路径.我必须同时画路径和移动别针.

观看此视频:https://www.dropbox.com/s/q5kdjf4iq0337vg/Map_Sample.mov?dl = 0

这是我的代码

func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
        let location = locations.last!
        userPath.addCoordinate(location.coordinate) //userPath -> GMSMutablePath
        let polyline = GMSPolyline(path: userPath)
        polyline.strokeColor = UIColor(red: 0, green: 191/255.0, blue: 1, alpha: 0.8)
        polyline.strokeWidth = 5
        CATransaction.begin()
        CATransaction.setAnimationDuration(2.0)
        self.userMarker.position = location.coordinate
        self.userMarker.rotation = location.course
        polyline.map = self.googleMapView
        CATransaction.commit()
    }
Run Code Online (Sandbox Code Playgroud)

另外这里是它现在如何工作的截图 示例图像

ios google-maps-sdk-ios

12
推荐指数
1
解决办法
3371
查看次数

是否有用于平移或缩放地图的Google Map事件监听器?

我希望能够检测用户是否缩小或移动了地图中心.我已经看过关于事件监听器的帖子但是在Javascript中我试图看看Google Maps iOS SDK中是否有类似的东西.我看到iPad Yelp应用程序有这样的东西,如果你放大/缩小或移动地图,工具栏从底部出现,让用户知道他们是否想要"重做区域搜索".我想做类似的事情,并用其他/更多标记重新加载地图.

我看过谷歌地图的参考指南,但遗憾的是没找到任何东西.如果有人有类似的东西或有关如何实现这一点的任何指导,任何信息都会很棒.提前致谢!

链接到Google地图文档我看过:

https://developers.google.com/maps/documentation/ios/reference/protocol_g_m_s_map_view_delegate-p

https://developers.google.com/maps/documentation/ios/reference/interface_g_m_s_coordinate_bounds

iphone google-maps ios google-maps-sdk-ios

11
推荐指数
2
解决办法
6903
查看次数

iOS 8 Google Maps SDK myLocation图标气泡图形故障

我正在学习Google Maps SDK并了解Swift,当我创建一个以我的位置为中心的mapview时myLocation = true,位置气泡显示出来,但它周围出现了一个方形面具,就像这样

图片

我没有对位置指示器执行任何操作,至少不是故意的.

有没有人遇到过这个问题?

google-maps ios google-maps-sdk-ios gmsmapview swift

11
推荐指数
1
解决办法
1524
查看次数

在动态(Cocoa Touch)框架内链接静态库

我有一个动态框架,它链接到谷歌地图(据我所知,它仍然是一种静态库,如果不是那样,只需要一个框架包装器).

问题是框​​架链接到静态库并且似乎也直接包含其代码,因为我不需要在使用框架的应用程序中链接或嵌入Google Maps,一切正常.除非我在应用内部使用Google地图.

要么在编译阶段我得到"架构XY的未定义符号",要么我将谷歌地图链接到它,然后我在app-launch期间在调试控制台中收到警告墙,如:

类GMSPolyline2D在/.../Build/Products/Debug-iphonesimulator/MyFramework.framework/MyFramework和/..../Bundle/Application/7C73324B-4A42-4063-98AA-879345997DE6/MyApp.app/MyApp中实现.将使用两者之一.哪一个未定义.

有没有办法只在框架中链接谷歌地图,但不包括框架产品中的符号?它适用于动态框架,但静态库似乎只是包含在内.我已经尝试使用-weak_framework和弱连接-weak_library,但它似乎不起作用.

实际上,我无法让Xcode -weak_library在其框架目录中找到GoogleMaps二进制文件,即使在.framework文件夹中直接链接为Library Search Path也是如此.

由于我是我框架的唯一用户,因此我可以强制执行使用框架DOES的每个应用程序都包含Google Maps框架.到目前为止,除了警告之外,应用程序工作正常(到目前为止,在运行时使用哪两个类无关紧要,因为两者都应该相同).但是,如果有更好的解决方案,我会睡得更好:)


编辑:我可以通过直接在linker-flag部分中移交绝对路径而不是使用Library Search Path设置来使-weak_library工作.但问题仍然存在,显然它仍然包含在框架中.

xcode cocoa-touch objective-c ios google-maps-sdk-ios

11
推荐指数
1
解决办法
2550
查看次数