मार्कर मैप पर एक जगह दिखाते हैं.
डिफ़ॉल्ट रूप से, मार्कर एक मानक आइकन का उपयोग करते हैं, जिसमें Google नक्शे का रूप और महसूस करते हैं. अगर आप अपने मार्कर को पसंद के मुताबिक बनाना चाहते हैं, तो आप या मार्कर चित्र को किसी कस्टम आइकन से बदलें या अन्य मार्कर की प्रॉपर्टी.
मार्कर पर किसी क्लिक इवेंट की प्रतिक्रिया में, आप एक जानकारी खोल सकते हैं विंडो खोलें. जानकारी विंडो, डायलॉग विंडो में टेक्स्ट या इमेज दिखाती है पर क्लिक करें. टेक्स्ट दिखाने या टेक्स्ट बनाने के लिए, डिफ़ॉल्ट जानकारी वाली विंडो का इस्तेमाल किया जा सकता है अपनी कस्टम जानकारी विंडो के कॉन्टेंट को पूरी तरह से कंट्रोल करने के लिए.
मार्कर जोड़ना
मार्कर जोड़ने के लिए, ऐसा GMSMarker
ऑब्जेक्ट बनाएं जिसमें एक position
और
title
और उसका map
सेट कर लिया है.
निम्न उदाहरण में किसी मौजूदा मार्कर को जोड़ने का तरीका दिखाया गया है
GMSMapView
ऑब्जेक्ट. मार्कर 10,10
निर्देशांकों पर बनाया जाता है, और यह दिखाया जाता है
स्ट्रिंग "हैलो वर्ल्ड" डालें.
Swift
let position = CLLocationCoordinate2D(latitude: 10, longitude: 10) let marker = GMSMarker(position: position) marker.title = "Hello World" marker.map = mapView
Objective-C
CLLocationCoordinate2D position = CLLocationCoordinate2DMake(10, 10); GMSMarker *marker = [GMSMarker markerWithPosition:position]; marker.title = @"Hello World"; marker.map = mapView;
आप सेट करके मैप में नए मार्कर जोड़े जाने को ऐनिमेट कर सकते हैं
marker.appearAnimation
प्रॉपर्टी:
kGMSMarkerAnimationPop
जोड़ने पर, मार्कर अपनेgroundAnchor
से पॉप हो जाता है.- जोड़े जाने पर मार्कर फ़ेड इन हो जाए, इसके लिए
kGMSMarkerAnimationFadeIn
.
मार्कर को हटाया जा रहा है
आप map
प्रॉपर्टी
nil
के लिए GMSMarker
. इसके अलावा, सभी ओवरले हटाए जा सकते हैं
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];
अगर आप किसी मार्कर को मैप में जोड़ने के बाद उसमें बदलाव करना चाहते हैं,
पक्का करें कि आपने GMSMarker
ऑब्जेक्ट को होल्ड पर रखा हो. आप मार्कर को संशोधित कर सकते हैं
बाद में ऐसा करने के लिए आपको इस ऑब्जेक्ट में बदलाव करना होगा.
Swift
let position = CLLocationCoordinate2D(latitude: 10, longitude: 10) let marker = GMSMarker(position: position) marker.map = mapView // ... marker.map = nil
Objective-C
CLLocationCoordinate2D position = CLLocationCoordinate2DMake(10, 10); GMSMarker *marker = [GMSMarker markerWithPosition:position]; marker.map = mapView; // ... marker.map = nil;
मार्कर का रंग बदलना
आप टिंट किए गए रंग का अनुरोध करके डिफ़ॉल्ट मार्कर इमेज के रंग को पसंद के मुताबिक बना सकते हैं
markerImageWithColor:
के साथ डिफ़ॉल्ट आइकॉन का वर्शन है और
नतीजे के तौर पर दिखाने के लिए, इमेज को GMSMarker
की आइकॉन प्रॉपर्टी में जोड़ा जा सकता है.
Swift
marker.icon = GMSMarker.markerImage(with: .black)
Objective-C
marker.icon = [GMSMarker markerImageWithColor:[UIColor blackColor]];
मार्कर चित्र को कस्टमाइज़ करना
अगर आप डिफ़ॉल्ट मार्कर चित्र को बदलना चाहते हैं, तो आप इसका उपयोग करके एक कस्टम आइकन सेट कर सकते हैं
मार्कर की icon
या iconView
प्रॉपर्टी. अगर iconView
सेट है, तो एपीआई
icon
प्रॉपर्टी पर ध्यान नहीं देता.
मार्कर की icon
प्रॉपर्टी का इस्तेमाल करना
निम्न स्निपेट
icon
प्रॉपर्टी में UIImage
. यह आइकॉन लंदन के इंग्लैंड में है. कॉन्टेंट बनाने
स्निपेट मान लेता है कि आपके ऐप्लिकेशन में "house.png" नाम की इमेज है.
Swift
let positionLondon = CLLocationCoordinate2D(latitude: 51.5, longitude: -0.127) let london = GMSMarker(position: positionLondon) london.title = "London" london.icon = UIImage(named: "house") london.map = mapView
Objective-C
CLLocationCoordinate2D positionLondon = CLLocationCoordinate2DMake(51.5, -0.127); GMSMarker *london = [GMSMarker markerWithPosition:positionLondon]; london.title = @"London"; london.icon = [UIImage imageNamed:@"house"]; london.map = mapView;
अगर एक ही इमेज का इस्तेमाल करके कई मार्कर बनाए जा रहे हैं, तो हर मार्कर के लिए UIImage
के एक ही इंस्टेंस का इस्तेमाल करें. इससे कई मार्कर दिखाते समय, आपके ऐप्लिकेशन की परफ़ॉर्मेंस को बेहतर बनाने में मदद मिलती है.
इस इमेज में कई फ़्रेम हो सकते हैं. साथ ही, alignmentRectInsets
गुण का सम्मान किया जाता है, जो तब उपयोगी होता है, जब मार्कर में कोई परछाई या अन्य
अनुपयोगी क्षेत्र.
मार्कर की iconView
प्रॉपर्टी का इस्तेमाल करें
निम्न स्निपेट
मार्कर की iconView
प्रॉपर्टी इस्तेमाल करता है और मार्कर के रंग में बदलाव ऐनिमेट करता है.
स्निपेट मानता है कि आपके ऐप्लिकेशन में "house.png" नाम की इमेज है.
Swift
import CoreLocation import GoogleMaps class MarkerViewController: UIViewController, GMSMapViewDelegate { var mapView: GMSMapView! var london: GMSMarker? var londonView: UIImageView? override func viewDidLoad() { super.viewDidLoad() let camera = GMSCameraPosition.camera( withLatitude: 51.5, longitude: -0.127, zoom: 14 ) let mapView = GMSMapView.map(withFrame: .zero, camera: camera) view = mapView mapView.delegate = self let house = UIImage(named: "House")!.withRenderingMode(.alwaysTemplate) let markerView = UIImageView(image: house) markerView.tintColor = .red londonView = markerView let position = CLLocationCoordinate2D(latitude: 51.5, longitude: -0.127) let marker = GMSMarker(position: position) marker.title = "London" marker.iconView = markerView marker.tracksViewChanges = true marker.map = mapView london = marker } func mapView(_ mapView: GMSMapView, idleAt position: GMSCameraPosition) { UIView.animate(withDuration: 5.0, animations: { () -> Void in self.londonView?.tintColor = .blue }, completion: {(finished) in // Stop tracking view changes to allow CPU to idle. self.london?.tracksViewChanges = false }) } }
Objective-C
@import CoreLocation; @import GoogleMaps; @interface MarkerViewController : UIViewController <GMSMapViewDelegate> @property (strong, nonatomic) GMSMapView *mapView; @end @implementation MarkerViewController { GMSMarker *_london; UIImageView *_londonView; } - (void)viewDidLoad { [super viewDidLoad]; GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:51.5 longitude:-0.127 zoom:14]; _mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera]; self.view = _mapView; _mapView.delegate = self; UIImage *house = [UIImage imageNamed:@"House"]; house = [house imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]; _londonView = [[UIImageView alloc] initWithImage:house]; _londonView.tintColor = [UIColor redColor]; CLLocationCoordinate2D position = CLLocationCoordinate2DMake(51.5, -0.127); _london = [GMSMarker markerWithPosition:position]; _london.title = @"London"; _london.iconView = _londonView; _london.tracksViewChanges = YES; _london.map = self.mapView; } - (void)mapView:(GMSMapView *)mapView idleAtCameraPosition:(GMSCameraPosition *)position { [UIView animateWithDuration:5.0 animations:^{ self->_londonView.tintColor = [UIColor blueColor]; } completion:^(BOOL finished) { // Stop tracking view changes to allow CPU to idle. self->_london.tracksViewChanges = NO; }]; } @end
iconView
, UIView
को स्वीकार करता है. इसलिए, आपके पास स्टैंडर्ड यूज़र इंटरफ़ेस (यूआई) की हैरारकी हो सकती है
आपके मार्कर को परिभाषित करता है, प्रत्येक दृश्य में एनिमेशन का मानक सेट होता है
सुविधाएं. आप मार्कर के आकार, रंग, और ऐल्फ़ा के बदलाव शामिल कर सकते हैं
में बदलाव कर सकता है. iconView
प्रॉपर्टी, frame
और
center
को छोड़कर, UIView
की उन सभी प्रॉपर्टी के लिए ऐनिमेशन की सुविधा देता है जिनमें ऐनिमेशन जोड़ा जा सकता है.
iconView
का इस्तेमाल करते समय, कृपया इन बातों का ध्यान रखें:
tracksViewChanges
सेट होने पर,UIView
संसाधनों की मांग कर सकता है इससेYES
तक बैटरी खर्च हो सकती है. इसके मुकाबले, सिंगल फ़्रेमUIImage
स्टैटिक है और इसे फिर से रेंडर करने की ज़रूरत नहीं होती.- अगर आपके पास कई मार्कर हैं, तो कुछ डिवाइसों को मैप को रेंडर करने में समस्या आ सकती है
और हर मार्कर का अपना
UIView
है और सभी मार्कर ट्रैक कर रहे हैं एक साथ कई बदलाव किए जाते हैं. iconView
, उपयोगकर्ता के इंटरैक्शन का जवाब नहीं देता, क्योंकि यह व्यू का स्नैपशॉट होता है.- व्यू इस तरह काम करता है जैसे
clipsToBounds
कोYES
पर सेट किया गया हो, भले ही वह वास्तविक मान. ऐसे ट्रांसफ़ॉर्म को लागू किया जा सकता है जो सीमाओं से बाहर काम करते हों, लेकिन आपका बनाया गया ऑब्जेक्ट, ऑब्जेक्ट के सीमा के अंदर होना चाहिए. सभी ट्रांसफ़ॉर्म/शिफ़्ट की निगरानी की जाती है और उन्हें लागू किया जाता है. कम शब्दों में: सबव्यू शामिल नहीं किया जा सकता.
tracksViewChanges
प्रॉपर्टी को कब सेट करना है, यह तय करने के लिए आकलन करें
मार्कर को फिर से बनाने से होने वाले फ़ायदों के आधार पर परफ़ॉर्मेंस पर ध्यान देना
स्वचालित रूप से. उदाहरण के लिए:
- अगर आपको कई बदलाव करने हैं, तो प्रॉपर्टी को
YES
पर सेट करें. इसके बाद, उसे फिर सेNO
पर सेट करें. - जब कोई ऐनिमेशन चल रहा हो या कॉन्टेंट लोड हो रहा हो
एसिंक्रोनस रूप से, आपको कार्रवाइयां होने तक प्रॉपर्टी को
YES
पर सेट रखना चाहिए पूर्ण हैं.
मार्कर की ओपैसिटी बदलना
किसी मार्कर की opacity
प्रॉपर्टी की मदद से, उसकी ओपैसिटी को कंट्रोल किया जा सकता है. आपको ऐसा करना चाहिए
ओपैसिटी को 0.0 और 1.0 के बीच फ़्लोट के तौर पर तय करें, जहां 0 पूरी तरह से पारदर्शी हो
और 1 पूरी तरह से ओपेक न हो.
Swift
marker.opacity = 0.6
Objective-C
marker.opacity = 0.6;
आप [Core Score]Core की मदद से, मार्कर की ओपैसिटी को ऐनिमेट कर सकते हैं
GMSMarkerLayer
का इस्तेमाल करके ऐनिमेशन.
मार्कर को फ़्लैट करना
मार्कर आइकॉन आम तौर पर डिवाइस की स्क्रीन की ओर बनाए जाते हैं इसलिए, मैप पर मैप को घुमाने, झुकाने या ज़ूम करने के लिए, मार्कर का ओरिएंटेशन बदलें.
आप मार्कर के ओरिएंटेशन को पृथ्वी के सामने सपाट होने के लिए सेट कर सकते हैं. कोई बदलाव नहीं जब मैप घुमाया जाता है, तो मार्कर घूमने लगते हैं, और जब मैप झुका हुआ. नियमित मार्कर की तरह, सपाट मार्कर अपना आकार तब बनाए रखते हैं, जब मैप ज़ूम इन या ज़ूम आउट हुआ हो.
मार्कर का ओरिएंटेशन बदलने के लिए, मार्कर की flat
प्रॉपर्टी को इस पर सेट करें
YES
या true
.
Swift
let positionLondon = CLLocationCoordinate2D(latitude: 51.5, longitude: -0.127) let londonMarker = GMSMarker(position: positionLondon) londonMarker.isFlat = true londonMarker.map = mapView
Objective-C
CLLocationCoordinate2D positionLondon = CLLocationCoordinate2DMake(51.5, -0.127); GMSMarker *londonMarker = [GMSMarker markerWithPosition:positionLondon]; londonMarker.flat = YES; londonMarker.map = mapView;
मार्कर को घुमाना
rotation
सेट करके, मार्कर को उसके ऐंकर पॉइंट के आस-पास घुमाया जा सकता है
प्रॉपर्टी. घुमाव को CLLocationDegrees
टाइप के तौर पर बताएं. इसे डिफ़ॉल्ट स्थिति से, घड़ी की दिशा में डिग्री में मेज़र किया जाता है. जब मैप पर मार्कर सपाट होता है,
डिफ़ॉल्ट स्थिति उत्तर है.
नीचे दिए गए उदाहरण में, मार्कर को 90° घुमाया गया है. groundAnchor
को सेट किया जा रहा है
प्रॉपर्टी 0.5,0.5
के कारण मार्कर को इसके केंद्र में घुमाया जाता है
उसके बेस के कुछ हिस्से होते हैं.
Swift
let degrees = 90.0 londonMarker.groundAnchor = CGPoint(x: 0.5, y: 0.5) londonMarker.rotation = degrees londonMarker.map = mapView
Objective-C
CLLocationDegrees degrees = 90; londonMarker.groundAnchor = CGPointMake(0.5, 0.5); londonMarker.rotation = degrees; londonMarker.map = mapView;
मार्कर पर इवेंट मैनेज करना
मैप पर होने वाले इवेंट सुने जा सकते हैं, जैसे कि जब कोई उपयोगकर्ता किसी इवेंट पर टैप करता है
मार्कर. इवेंट सुनने के लिए, आपको GMSMapViewDelegate
प्रोटोकॉल लागू करना होगा. मार्कर इवेंट और
हाथ के जेस्चर (हाव-भाव) का इस्तेमाल करके,
मार्कर इवेंट के लिए सबसे सही तरीके का इस्तेमाल करता है. इवेंट से जुड़ी गाइड में
के तरीके यहां बताए गए हैं. Street View इवेंट के लिए, देखें
GMSPanoramaViewDelegate
.