1

iOS 용 Google지도 API를 통해 Google지도에서 맞춤 오버레이보기를 표시하려고합니다. 이 오버레이보기는 마커의 내용 정보와 두 개의 내 버튼입니다. 그러나 나는 이것에 대한 어떤 언급도 찾을 수 없다.iOS에서 Google 마커를 클릭하면 두 개의 버튼으로 오버레이 정보보기를 더 표시하는 방법

http://i1121.photobucket.com/albums/l515/dungnlh_khtn07/NguoiMoCay/overlayinfoview_zps8110b7ed.jpg

이 나에게 가이드를 제공하십시오 : 내 원하는 오버레이 뷰는 아래의 링크를 이미지로입니다!

답변

2

이것을 달성하는 가장 좋은 방법은 GMSMapViewDelegate의 mapView:markerInfoWindow: 메소드를 통해 GMSMapView에 정보 창에 대한 맞춤보기를 전달하는 것입니다.

이러한 목표를 달성하기 위해, 같은, 당신의 GMSMapView의 인스턴스의 대리인으로 자신을 설정 : 요청시

self.mapView.delegate = self; 

그런 다음 사용자 정의에 UIView를 반환 :

- (UIView *)mapView:(GMSMapView *)mapView markerInfoWindow:(id<GMSMarker>)marker 
{ 
    UIView *customView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)]; 
    customView.backgroundColor = [UIColor redColor]; 

    return customView; 
} 

당신은 조금을 찾을 작업을 할 수 있습니다 정보는 GMSMapView 헤더를 보면 알 수 있습니다 :

/** 
* Called when a marker is about to become selected, and provides an optional 
* custom info window to use for that marker if this method returns a UIView. 
* If you change this view after this method is called, those changes will not 
* necessarily be reflected in the rendered version. 
* 
* The returned UIView must not have bounds greater than 500 points on either 
* dimension. As there is only one info window shown at any time, the returned 
* view may be reused between other info windows. 
* 
* @return The custom info window for the specified marker, or nil for default 
*/ 
+1

아래의 설명에 따라 작동하지 않습니다. 실제로 버튼으로 데모를 연결하고 확인해보십시오. – pfrank

2

그래도 가능하지만 meone 터치에 반응하는 UIView에 UIButton을 가져 오는 방법을 명확히 설명해주십시오. 덩 응우 엔 르 호앙의 두 그림처럼.

- (UIView *)mapView:(GMSMapView *)mapView markerInfoWindow:(id<GMSMarker>)marker 
{ 
    UIView *customView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)]; 
    customView.backgroundColor = [UIColor redColor]; 

    UIButton *button = [UIButton buttonWithType:UIButtonTypeDetailDisclosure]; 
    [button addTarget:self action:@selector(buttonPressed) forControlEvents:UIControlEventTouchUpInside]; 
    [button setFrame:CGRectMake(0, 0, 30, 30)]; 

    [customView addSubview:button]; 

    return customView; 
} 

을 물론 그것이 호출되지 않습니다

- (void)buttonPressed 
{ 
    NSLog(@"Hello"); 
} 

의 buttonPressed 한 예를 들어,이 같은 버튼을 추가합니다. self.mapView에 서브 뷰로 단추를 추가하면 InfoWindow가 아니라 mapView에 나타나며 물론 터치에 반응합니다. 나는 그것이 설정되지 않은 프레임들로 인해 발생한다고 생각하지만 그것을 얻을 수는 없습니다. 누군가 명확히 할 수 있습니까? 뷰가 이미지로 렌더링 오히려

정보 창, 라이브 뷰되지 않습니다 : Google지도 안드로이드 API의 문서에서 공식적으로 언급 한 바와 같이

+0

나는 똑같은 문제에 직면 해있다. 해결 했니? – Yashesh

+4

SDK는 UIView를 오버레이 이미지로 렌더링하지 않으므로 반응이 없습니다.나는 @property에 마커의 좌표 내 정보 창을 나타내는 하위 뷰와 같은 뷰를 추가하고 기억 (ID ) 마커 : (GMSMapView의 *)지도보기 didTapMarker : - (BOOL)지도보기 방법 에서 : 나는 다른 해결책을했습니다 사용자가 뷰를 이동하면 해당 UIView가 didChangeCameraPosition에서 재배치 될 수 있습니다. 그 UIView의는 다음 에보기에서 기각 - (무효)지도보기 (GMSMapView의 *)지도보기 didTapAtCoordinate : (CLLocationCoordinate2D) 사용자가 다른지도에 도청 때 해고 방법을 좌표입니다. –

+0

@ VladimirKolbas의 대답은 옳습니다. 나는 같은 문제를 해결했다. – Dalinaum

5

아마도, 정보창에 관한 아래의 제한은 Google지도 iOS 용 SDK 적용 지도에. 결과적으로보기에서 설정 한 모든 리스너는 무시되며보기의 여러 부분에서 클릭 이벤트를 구별 할 수 없습니다. 사용자 정의 정보 창에 대화 형 구성 요소 (예 : 단추, 체크 상자 또는 텍스트 입력)를 두지 마십시오. (GMSMapView의 *)지도보기 didTapInfoWindowOfMarker :

그래서 bascially 전용 "didTapWindowOfMarker"

1
  • (무효)지도보기 트리거 정보창의 어떤 부분을 클릭 (GMS 마커 *) 마커를
0

당신이 할 수있는 두 버튼 AlertView 또는 ActionSheet 표시 때 markerInfoContents의 사용자 탭