GMSAdvancedMarker
서브클래스를 사용하여 기본 또는
특정 마커 기능을 정의할 수 있습니다. 하위 클래스로
GMSMarker
, GMSAdvancedMarker
는 마커에 추가 기능을 제공합니다.
표현식에 포함할 수 있습니다.
Swift
let camera = GMSCameraPosition( target: coordinate, zoom: 14) let mapID = GMSMapID(identifier: "YOUR_MAP_ID") let mapView = GMSMapView(frame: view.bounds, mapID: mapID, camera: camera) let marker = GMSAdvancedMarker(position: coordinate) marker.map = mapView
Objective-C
GMSCameraPosition *camera = [GMSCameraPosition cameraWithTarget:kCoordinate zoom:16]; GMSMapID *mapID = [GMSMapID mapIDWithIdentifier:"YOUR_MAP_ID"]; self.mapView = [GMSMapView mapWithFrame:self.view.bounds mapID:mapID camera:camera]; GMSAdvancedMarker *marker = [GMSAdvancedMarker markerWithPosition:kCoordinate]; Marker.map = self.mapView;
고급 마커 제거
GMSMarker
와 마찬가지로 다음 위치에서 고급 마커를 삭제할 수 있습니다.
GMSAdvancedMarker
의 지도 속성을 설정하여 지도를 지도에 표시
nil
님에게 전송합니다. 또는 각 오버레이의 모든 오버레이 (고급 기능 포함)를
GMSMapView
clear
메서드를 호출하여 지도에 마커)를 표시할 수 있습니다.
Swift
let camera = GMSCameraPosition.camera( withLatitude: -33.8683, longitude: 151.2086, zoom: 6 ) let mapView = GMSMapView.map(withFrame: .zero, camera: camera) // ... mapView.clear()
Objective-C
GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-33.8683 longitude:151.2086 zoom:6]; mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera]; // ... [mapView clear];
지도에 추가한 마커를 수정하려면
GMSAdvancedMarker
객체를 지정합니다. 그러면 나중에 이 개체를 변경하여 마커를 수정할 수 있습니다.
Swift
let position = CLLocationCoordinate2D(latitude: 10, longitude: 10) let marker = GMSAdvancedMarker(position: position) marker.map = mapView // ... marker.map = nil
Objective-C
CLLocationCoordinate2D position = CLLocationCoordinate2DMake(10, 10); GMSAdvancedMarker *marker = [GMSAdvancedMarker markerWithPosition:position]; marker.map = mapView; // ... marker.map = nil;
지도 기능
GMSMapView
의 mapCapabilities
속성은 프로그래매틱을 추가합니다.
확인할 수 있습니다 이것은
특정 지도 기능을 사용할 수 있습니다. 이
didChangeMapCapabilities
함수
또한 GMSMapViewDelegate
도 사용할 수 있습니다.
호출됩니다.
이 쿼리는 지도뷰에서 고급 마커를 지원하는지 확인합니다.
Swift
// ... let advancedMarker: GMSAdvancedMarker = { GMSAdvancedMarker(position: CLLocationCoordinate2D(latitude: 47.6089945, longitude: -122.3410462)) }() let marker: GMSMarker = { GMSMarker(position: CLLocationCoordinate2D(latitude: 47.6089945, longitude: -122.3410462)) }() func addMarker() { if mapView.mapCapabilities.contains(.advancedMarkers) { advancedMarker.map = mapView } else { marker.map = mapView } } extension MapCapabilities: GMSMapViewDelegate { func mapView(_ mapView: GMSMapView, didChangeMapCapabilities mapCapabilities: GMSMapCapabilityFlags) { let advancedMarkerAvailable = mapCapabilities.contains(.advancedMarkers) advancedMarker.map = advancedMarkerAvailable ? mapView : nil marker.map = advancedMarkerAvailable ? nil : mapView } }
Objective-C
// ... _advancedMarker = [GMSAdvancedMarker markerWithPosition: kSeattleCoordinates]; _fallbackMarker = [GMSMarker markerWithPosition: kSeattleCoordinates]; - (void)addMarker { if (_mapView.mapCapabilities & GMSMapCapabilityFlagsAdvancedMarkers) { _advancedMarker.map = _mapView; } else { _fallbackMarker.map = _mapView; } } #pragma mark - GMSMapViewDelegate - (void)mapView:(GMSMapView *)mapView didChangeMapCapabilities:(GMSMapCapabilityFlags)mapCapabilities { BOOL advancedMarkersAvailable = mapCapabilities & GMSMapCapabilityFlagsAdvancedMarkers; _advancedMarker.map = advancedMarkersAvailable ? _mapView : nil; _fallbackMarker.map = advancedMarkersAvailable ? nil : _mapView; }