2013-03-09 41 views
5

Tôi chỉ có một câu hỏi và dường như không thể tìm thấy câu hỏi ở bất cứ đâu.Cách triển khai iOS Google Maps SDK

I "m mới để phát triển iOS và cố gắng sử dụng Google Maps trong ứng dụng của tôi.

tôi đã đi qua ví dụ họ cung cấp cho bạn here.

#import "DemoViewController.h" 
#import <GoogleMaps/GoogleMaps.h> 

@implementation DemoViewController { 
    GMSMapView *mapView_; 
} 

- (void)loadView { 
    GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:1.285 
                  longitude:103.848 
                   zoom:12]; 
    mapView_ = [GMSMapView mapWithFrame:CGRectZero camera:camera]; 
    self.view = mapView_; 
} 

@end 

Nhưng khi bạn sẽ nhìn thấy họ đặt self.view = mapView_; và lớp UIView không có một chức năng xem.

tôi muốn bản đồ để được bên trong một UIView tôi có nghĩa là bên trong một ViewController

Tôi đã mất bạn chưa? Dù bằng cách nào ở đây cũng là một bức tranh. enter image description here

Vì vậy, bên trong chế độ xem (hoặc khoảng trắng) tôi muốn bản đồ tải.

Cảm ơn các bạn đã trợ giúp.

+0

Tôi vừa thử bất cứ điều gì họ cung cấp, đây là ví dụ bạn tạo Chế độ xem và tải bản đồ. (Cập nhật ở trên) – Claud

+0

bạn có thể thêm mapview của mình dưới dạng một chế độ xem phụ? 'self.view addSubview: mapView' –

Trả lời

4

Tôi đã tìm được giải pháp phù hợp với mình nếu có ai đó cần làm điều tương tự.

tôi chỉ sử dụng một cái nhìn container và sau đó thực hiện lớp riêng biệt UIViewController (mà có google maps sdk code thêm một phần bản đồ) và sau đó nối nó lên đến ViewController chính của tôi bằng cách sử dụng [self.view addSubview:googleMapsView]; googleMapsView là xem container của tôi mà tôi kết nối với chính ViewController.

6

Vì vậy, bạn đã có GMSMapView. Và bạn có thể đặt một chế độ xem là chế độ xem phụ của một chế độ xem khác trong giao diện với addSubview:. Tôi sẽ không làm điều đó trong loadView nếu tôi là bạn, mặc dù. viewDidLoad là cơ hội tốt đầu tiên.

Tôi nghĩ rằng vấn đề thực sự của bạn là bạn đang đi trước chính mình. Bạn đang cố gắng làm điều này mà không biết cách hoạt động của chế độ xem, cách bộ điều khiển chế độ xem hoạt động, v.v. Tôi khuyên bạn nên hít thở sâu và tìm hiểu về lập trình iOS trước khi bạn nhảy vào với tất cả bốn bộ. Nếu không, bạn không biết mã của bạn (hoặc mã của Google) có nghĩa là gì.

+0

Bạn nói đúng rằng tôi cần phải tìm hiểu thêm và đó là lý do tại sao tôi hỏi. Tôi chỉ muốn biết cách tốt nhất để làm việc này là vậy. – Claud

+0

Vâng, tôi nghĩ tôi đã trả lời điều đó. Bạn cần biết về chế độ xem và bản xem trước, nhận tham chiếu đến chế độ xem thông qua một lối thoát, tải chế độ xem của trình điều khiển chế độ xem và sử dụng biến mẫu để tham chiếu đến lối thoát, v.v. Đó là tất cả các công cụ lập trình iOS cơ bản; nó không liên quan gì đến Google Maps. Khi bạn biết tất cả điều đó, làm thế nào để đặt một GMSMapView vào giao diện của bạn sẽ chết rõ ràng. – matt

+0

@matt: trên một lưu ý khác, bạn có biết được các ứng dụng dựa trên bản đồ google được Apple chấp thuận hay không? Tôi không chắc chắn với điều này. –

4

Tôi đã làm chính xác điều tương tự here.

Chỉ cần thêm Chế độ xem loại GMSMapView qua trình tạo giao diện và sau đó thiết lập thuộc tính trong bộ điều khiển.

1
Please try below code. 
@property (strong, nonatomic) IBOutlet GMSMapView *mapView; 
-(void)addAllPinsOnMapView 
{ 
arrMapPin=[[NSMutableArray alloc] init]; 
for(int i = 0; i < arrOfferList.count; i++) 
{ 
    GMSCameraPosition *cameraPosition=[GMSCameraPosition cameraWithLatitude:[[[arrOfferList objectAtIndex:i] objectForKey:@"latitude"] floatValue] longitude:[[[arrOfferList objectAtIndex:i] objectForKey:@"longitude"] floatValue] zoom:12]; 
    // mapView = [GMSMapView mapWithFrame:CGRectZero camera:cameraPosition]; 
    _mapView.camera = cameraPosition; 
    _mapView.myLocationEnabled=YES; 

    GMSMarker *marker=[[GMSMarker alloc]init]; 
    marker.position=CLLocationCoordinate2DMake([[[arrOfferList objectAtIndex:i] objectForKey:@"latitude"] floatValue], [[[arrOfferList objectAtIndex:i] objectForKey:@"longitude"] floatValue]); 
    marker.title = [[arrOfferList objectAtIndex:i] objectForKey:@"business"]; 
    marker.map=_mapView; 
    _mapView.delegate = self; 
} 
} 
- (void)mapView:(GMSMapView *)mapView didTapInfoWindowOfMarker: 
(GMSMarker *)marker { 
NSPredicate *result; 
result=[NSPredicate predicateWithFormat:@"business CONTAINS[c] %@",marker.title]; 
NSArray * array = [arrOfferList filteredArrayUsingPredicate:result]; 
OfferDetailsViewController *objOfferDetailsViewController = [[OfferDetailsViewController alloc]init]; 
objOfferDetailsViewController.dictOfferDetails=[array objectAtIndex:0]; 
[self.navigationController pushViewController:objOfferDetailsViewController animated:YES]; 
} 
- (IBAction)btnLocateMe:(UIButton *)sender 
{ 
GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:[[[AppDelegate initAppDelegate].DictLocation objectForKey:@"Latitude"] floatValue] longitude:[[[AppDelegate initAppDelegate].DictLocation objectForKey:@"Longitude"] floatValue] zoom:14]; 
[_mapView animateToCameraPosition:camera]; 
} 
+0

Trong khi mã này có thể trả lời câu hỏi, cung cấp ngữ cảnh bổ sung về cách thức và/hoặc lý do giải thích vấn đề này sẽ cải thiện giá trị lâu dài của câu trả lời. –

Các vấn đề liên quan