iOS के लिए Maps SDK टूल की मदद से, अपने मैप में आकार जोड़ने के कई तरीके उपलब्ध हैं मैप. निम्न आकार समर्थित हैं:
- पॉलीलाइन, जुड़े हुए लाइन सेगमेंट की एक सीरीज़ होती है, जो कोई भी आकार बना सकती है इसका इस्तेमाल मैप पर पाथ और रूट को मार्क करने के लिए किया जा सकता है.
- पॉलीगॉन एक बंद आकार होता है जिसका इस्तेमाल मैप पर क्षेत्रों को चिह्नित करने के लिए किया जा सकता है.
- वृत्त, पृथ्वी के पर वृत्त का भौगोलिक दृष्टि से सटीक प्रोजेक्शन होता है की जगह है.
आप हर आकार के रंग-रूप को कई तरीकों से बदल सकते हैं.
पॉलीलाइन
पॉलीलाइन की मदद से, मैप पर लाइनें बनाई जा सकती हैं. GMSPolyline
ऑब्जेक्ट, जगहों का ऑर्डर किया हुआ क्रम दिखाता है. इसे
लाइन सेगमेंट. पॉलीलाइन का रंग सेट करने के लिए,
GMSStrokeStyle
.
पॉलीलाइन बनाने के लिए, आपको
संबंधित GMSMutablePath
ऑब्जेक्ट, जिसमें दो या दो से ज़्यादा पॉइंट हैं.
हर CLLocationCoordinate2D
, पृथ्वी की सतह पर एक बिंदु को दिखाता है. लाइन
पॉइंट के बीच सेगमेंट उसी क्रम में बनाए जाते हैं जिस क्रम में आपने उन्हें जोड़ा है
से पाथ तक ले जाना है. addCoordinate:
की मदद से, पाथ में पॉइंट जोड़े जा सकते हैं या
addLatitude:longitude:
तरीके.
Swift
let path = GMSMutablePath() path.add(CLLocationCoordinate2D(latitude: -33.85, longitude: 151.20)) path.add(CLLocationCoordinate2D(latitude: -33.70, longitude: 151.40)) path.add(CLLocationCoordinate2D(latitude: -33.73, longitude: 151.41)) let polyline = GMSPolyline(path: path)
Objective-C
GMSMutablePath *path = [GMSMutablePath path]; [path addCoordinate:CLLocationCoordinate2DMake(-33.85, 151.20)]; [path addCoordinate:CLLocationCoordinate2DMake(-33.70, 151.40)]; [path addCoordinate:CLLocationCoordinate2DMake(-33.73, 151.41)]; GMSPolyline *polyline = [GMSPolyline polylineWithPath:path];
पॉलीलाइन जोड़ना
- कोई
GMSMutablePath
ऑब्जेक्ट बनाएं. addCoordinate:
की मदद से पाथ में पॉइंट सेट करें याaddLatitude:longitude:
तरीके.- पाथ का इस्तेमाल करके, नया
GMSPolyline
ऑब्जेक्ट बनाएं: तर्क है. - ज़रूरत के हिसाब से
strokeWidth
औरstrokeColor
जैसी अन्य प्रॉपर्टी सेट करें. GMSPolyline
कीmap
प्रॉपर्टी सेट करें.- मैप पर पॉलीलाइन दिखने लगेगी.
यह कोड स्निपेट, मैप में एक रेक्टैंगल जोड़ता है:
Swift
let rectanglePath = GMSMutablePath() rectanglePath.add(CLLocationCoordinate2D(latitude: 37.36, longitude: -122.0)) rectanglePath.add(CLLocationCoordinate2D(latitude: 37.45, longitude: -122.0)) rectanglePath.add(CLLocationCoordinate2D(latitude: 37.45, longitude: -122.2)) rectanglePath.add(CLLocationCoordinate2D(latitude: 37.36, longitude: -122.2)) rectanglePath.add(CLLocationCoordinate2D(latitude: 37.36, longitude: -122.0)) let rectangle = GMSPolyline(path: path) rectangle.map = mapView
Objective-C
GMSMutablePath *rectanglePath = [GMSMutablePath path]; [rectanglePath addCoordinate:CLLocationCoordinate2DMake(37.36, -122.0)]; [rectanglePath addCoordinate:CLLocationCoordinate2DMake(37.45, -122.0)]; [rectanglePath addCoordinate:CLLocationCoordinate2DMake(37.45, -122.2)]; [rectanglePath addCoordinate:CLLocationCoordinate2DMake(37.36, -122.2)]; [rectanglePath addCoordinate:CLLocationCoordinate2DMake(37.36, -122.0)]; GMSPolyline *rectangle = [GMSPolyline polylineWithPath:path]; rectangle.map = mapView;
पॉलीलाइन हटाना
GMSPolyline
के map
को सेट करके, मैप से पॉलीलाइन हटाई जा सकती है
प्रॉपर्टी को nil
के लिए सेट अप किया गया है. वैकल्पिक रूप से, आप सभी ओवरले हटा सकते हैं (
GMSMapView
को कॉल करके मैप पर पॉलीलाइन और अन्य आकृतियां
clear
तरीका.
Swift
mapView.clear()
Objective-C
[mapView clear];
पॉलीलाइन को पसंद के मुताबिक बनाना
GMSPolyline
ऑब्जेक्ट, कंट्रोल करने के लिए कई प्रॉपर्टी उपलब्ध कराता है
कैसा लगा. इसमें इन विकल्पों का इस्तेमाल किया जा सकता है:
strokeWidth
- अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है स्क्रीन पॉइंट में पूरी लाइन की चौड़ाई. डिफ़ॉल्ट तौर पर, यह वैल्यू 1 पर सेट होती है. चौड़ाई मैप ज़ूम किए जाने पर स्केल नहीं होता.
geodesic
- अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
YES
पर, इस पॉलीलाइन किनारे को जियोडेसिक के तौर पर रेंडर करें. जियोडेसिक सेगमेंट पृथ्वी की सतह के सबसे छोटे पथ का अनुसरण करते हैं और शायद मर्केटर प्रोजेक्शन के साथ मैप पर वक्र रेखाओं के रूप में दिखाई देते हैं. नॉन-जियोडेसिक मैप पर सेगमेंट सीधी रेखाओं में बनाए जाते हैं. डिफ़ॉल्ट तौर पर, यहNO
पर सेट होता है. spans
- का इस्तेमाल, पॉलीलाइन के एक या उससे ज़्यादा सेगमेंट के रंग की जानकारी देने के लिए किया जाता है. कॉन्टेंट बनाने
spans प्रॉपर्टी,
GMSStyleSpan
का कलेक्शन होती है ऑब्जेक्ट हैं.spans
प्रॉपर्टी को सेट करना, इन कामों का पसंदीदा तरीका है पॉलीलाइन का रंग बदलें. strokeColor
-
UIColor
ऑब्जेक्ट, जो पॉलीलाइन के रंग के बारे में बताता है. डिफ़ॉल्ट तौर पर, यहblueColor
पर सेट होता है.strokeColor
प्रॉपर्टी अगरspans
सेट है, तो इसे अनदेखा कर दिया जाता है.
निम्न स्निपेट मेलबर्न से पर्थ तक एक मोटी पॉलीलाइन जोड़ता है, जिसमें जियोडेसिक इंटरपोलेशन.
Swift
let path = GMSMutablePath() path.addLatitude(-37.81319, longitude: 144.96298) path.addLatitude(-31.95285, longitude: 115.85734) let polyline = GMSPolyline(path: path) polyline.strokeWidth = 10.0 polyline.geodesic = true polyline.map = mapView
Objective-C
GMSMutablePath *path = [GMSMutablePath path]; [path addLatitude:-37.81319 longitude:144.96298]; [path addLatitude:-31.95285 longitude:115.85734]; GMSPolyline *polyline = [GMSPolyline polylineWithPath:path]; polyline.strokeWidth = 10.f; polyline.geodesic = YES; polyline.map = mapView;
मैप में जोड़ने के बाद पॉलीलाइन को बदलने के लिए,
GMSPolyline
ऑब्जेक्ट.
Swift
polyline.strokeColor = .blue
Objective-C
polyline.strokeColor = [UIColor blueColor];
पॉलीलाइन का रंग बदलना
मैप पर अलग-अलग सेगमेंट की सीरीज़ के तौर पर पॉलीलाइन बनाई जाती हैं. रंग बदलने की सुविधा उपलब्ध है
spans
प्रॉपर्टी की मदद से, अलग-अलग सेगमेंट या पूरी लाइन का. हालांकि
यह प्रॉपर्टी आपको पॉलीलाइन के रंग पर पूरा कंट्रोल देती है,
इसमें कई सुविधाएं मौजूद हैं, जो आपको एक ही शैली को संपूर्ण
लाइन.
नीचे दिया गया स्निपेट, स्निपेट का रंग बदलने के लिए spanWithColor:
तरीके का इस्तेमाल करता है
पूरी लाइन से लेकर लाल रंग का कर दें.
Swift
polyline.spans = [GMSStyleSpan(color: .red)]
Objective-C
polyline.spans = @[[GMSStyleSpan spanWithColor:[UIColor redColor]]];
अगर आपके पास GMSStrokeStyle
का ऐक्सेस पहले से है, तो इसका इस्तेमाल करके भी ऐसा किया जा सकता है
ऑब्जेक्ट है, तो आप spanWithStyle:
तरीके का इस्तेमाल कर सकते हैं.
Swift
let solidRed = GMSStrokeStyle.solidColor(.red) polyline.spans = [GMSStyleSpan(style: solidRed)]
Objective-C
GMSStrokeStyle *solidRed = [GMSStrokeStyle solidColor:[UIColor redColor]]; polyline.spans = @[[GMSStyleSpan spanWithStyle:solidRed]];
iOS के लिए Maps SDK के वर्शन 1.7 से पहले के वर्शन में, एक ही प्रॉपर्टी
strokeColor
,
GMSPolyline
. spans
प्रॉपर्टी को प्राथमिकता दी जाती है
strokeColor
.
Swift
polyline.strokeColor = .red
Objective-C
polyline.strokeColor = [UIColor redColor];
स्टाइल
अगर आपका ऐप्लिकेशन बार-बार एक ही स्ट्रोक का रंग लागू करता है, तो यह आपको काम का लग सकता है
का इस्तेमाल करें. पॉलीलाइन शैलियों का पता लगाने के लिए
GMSStrokeStyle
ऑब्जेक्ट. स्ट्रोक शैली या तो ठोस हो सकती है
रंग या ग्रेडिएंट शामिल करें, जो एक रंग से दूसरे रंग में हो. एक बार आपने बना लिया
स्टाइल, आप इसे GMSStyleSpan
पर लागू कर सकते हैं
spanWithStyle:
तरीका.
Swift
// Create two styles: one that is solid blue, and one that is a gradient from red to yellow let solidBlue = GMSStrokeStyle.solidColor(.blue) let solidBlueSpan = GMSStyleSpan(style: solidBlue) let redYellow = GMSStrokeStyle.gradient(from: .red, to: .yellow) let redYellowSpan = GMSStyleSpan(style: redYellow)
Objective-C
// Create two styles: one that is solid blue, and one that is a gradient from red to yellow GMSStrokeStyle *solidBlue = [GMSStrokeStyle solidColor:[UIColor blueColor]]; GMSStyleSpan *solidBlueSpan = [GMSStyleSpan spanWithStyle:solidBlue]; GMSStrokeStyle *redYellow = [GMSStrokeStyle gradientFromColor:[UIColor redColor] toColor:[UIColor yellowColor]]; GMSStyleSpan *redYellowSpan = [GMSStyleSpan spanWithStyle:redYellow];
span
की स्टाइल, पॉलीलाइन के आखिर तक या नई सेल तक जारी रहेगी
शैली सेट है. spans
को सेट करके, पूरी लाइन का रंग बदला जा सकता है
एक पॉलीलाइन की प्रॉपर्टी GMSStyleSpan
का उदाहरण
यह बताता है कि पॉलीलाइन की पूरी लंबाई में ग्रेडिएंट कैसे लागू करें.
Swift
polyline.spans = [GMSStyleSpan(style: redYellow)]
Objective-C
polyline.spans = @[[GMSStyleSpan spanWithStyle:redYellow]];
अलग-अलग लाइन सेगमेंट का रंग बदलना
अगर आपको पॉलीलाइन के हर सेगमेंट के लिए, अलग-अलग स्टाइल बनानी है, तो ऐसा किया जा सकता है
GMSStyleSpan
ऑब्जेक्ट का कलेक्शन बनाकर और उसे पास करके
spans
प्रॉपर्टी के लिए. डिफ़ॉल्ट रूप से, अरे में मौजूद हर आइटम
संबंधित लाइन सेगमेंट. यदि अरे में इससे ज़्यादा एलिमेंट हैं, तो
सेगमेंट लाइन में हैं, तो अतिरिक्त एलिमेंट को अनदेखा कर दिया जाएगा. अगर कम
एलिमेंट मौजूद हैं, तो फ़ाइनल GMSStyleSpan
में
पंक्ति के शेष भाग के लिए रंग.
बदलावों के बारे में बताने के लिए, कलर के ब्लॉक और/या ग्रेडिएंट पॉलीलाइन का इस्तेमाल किया जा सकता है पॉलीलाइन, जैसे कि ऊंचाई या गति. नीचे दिया गया स्निपेट रंग सेट करता है पॉलीलाइन के पहले दो सेगमेंट लाल रंग के हैं और बाकी की लाइन ग्रेडिएंट जो लाल से पीला हो जाता है.
Swift
polyline.spans = [ GMSStyleSpan(style: solidRed), GMSStyleSpan(style: solidRed), GMSStyleSpan(style: redYellow) ]
Objective-C
polyline.spans = @[[GMSStyleSpan spanWithStyle:solidRed], [GMSStyleSpan spanWithStyle:solidRed], [GMSStyleSpan spanWithStyle:redYellow]];
कई कॉलम के लिए स्टाइल सेट करने के लिए, spanWithStyle:segments:
तरीके का इस्तेमाल किया जा सकता है
एक साथ कई सेगमेंट बना सकते हैं. उदाहरण के लिए, यह कोड ऊपर दिए गए कोड के बराबर है.
आखिरी GMSStyleSpan
के सेगमेंट की लंबाई को हमेशा अनदेखा किया जाता है
क्योंकि स्टाइल का इस्तेमाल लाइन के बाकी हिस्से के बारे में बताने के लिए किया जाता है.
Swift
polyline.spans = [ GMSStyleSpan(style: solidRed, segments:2), GMSStyleSpan(style: redYellow, segments:10) ]
Objective-C
polyline.spans = @[[GMSStyleSpan spanWithStyle:solidRed segments:2], [GMSStyleSpan spanWithStyle:redYellow segments:10]];
फ़्रैक्शनल सेगमेंट
खंडों को भिन्नात्मक मान के रूप में भी दर्ज किया जा सकता है. इससे स्टाइल लागू हो जाएगी
सेगमेंट की आंशिक संख्या में हो सकता है, जिसकी वजह से
सेगमेंट. हर GMSStyleSpan
इस तारीख के तुरंत बाद शुरू हो जाता है:
पिछला वाला: नीचे दिए गए उदाहरण में, स्लेटी रंग 1⁄2 से शुरू होता है
दूसरा सेगमेंट और तीसरे सेगमेंट से 1⁄2 जारी रखें.
Swift
polyline.spans = [ GMSStyleSpan(style: solidRed, segments: 2.5), GMSStyleSpan(color: .gray), GMSStyleSpan(color: .purple, segments: 0.75), GMSStyleSpan(style: redYellow) ]
Objective-C
polyline.spans = @[[GMSStyleSpan spanWithStyle:solidRed segments:2.5], [GMSStyleSpan spanWithColor:[UIColor grayColor]], [GMSStyleSpan spanWithColor:[UIColor purpleColor] segments:0.75], [GMSStyleSpan spanWithStyle:redYellow]];
पॉलीलाइन में दोहराए जाने वाले रंग का पैटर्न जोड़ना
अगर आपको पॉलीलाइन पर कोई पैटर्न जोड़ना है, तो
GMSGeometryUtils
में GMSStyleSpans
उपयोगिता तरीका. कॉन्टेंट बनाने
GMSStyleSpans
तरीका, दोहराए जाने वाले पैटर्न को तय करने वाले दो सरणियों को स्वीकार करता है. एक
अरे उन स्टाइल को सेट करता है जिन्हें दोहराया जाना चाहिए, और दूसरा कलेक्शन
दोहराव का अंतराल. साथ में उपयोग करने पर, आप ऐसा पैटर्न बना सकते हैं जो
किसी भी पॉलीलाइन पर लागू किया जाता है, भले ही उसकी लंबाई या सेगमेंट की संख्या कुछ भी हो
उपलब्ध हैं.
उदाहरण के लिए, नीचे दिया गया कोड स्निपेट एक पॉलीलाइन को काले और सफ़ेद रंग से परिभाषित करता है
पंक्ति या कॉलम के लिए अलग-अलग पैटर्न का इस्तेमाल किया जा सकता है. इसकी लंबाई को रब लाइन के साथ मीटर में समझा जाता है (
Mercator, यह एक सीधी लाइन है) क्योंकि टाइप इस तरह से बताया गया है
kGMSLengthRhumb
.
Swift
let styles = [ GMSStrokeStyle.solidColor(.white), GMSStrokeStyle.solidColor(.black) ] let lengths: [NSNumber] = [100000, 50000] polyline.spans = GMSStyleSpans( polyline.path!, styles, lengths, GMSLengthKind.rhumb )
Objective-C
NSArray *styles = @[[GMSStrokeStyle solidColor:[UIColor whiteColor]], [GMSStrokeStyle solidColor:[UIColor blackColor]]]; NSArray *lengths = @[@100000, @50000]; polyline.spans = GMSStyleSpans(polyline.path, styles, lengths, kGMSLengthRhumb);
स्प्राइट स्टैंपेड पॉलीलाइन
स्प्राइट स्टैंपेड पॉलीलाइन की मदद से, दोहराए जाने वाले बिटमैप का इस्तेमाल करके पॉलीलाइन बनाई जा सकती है आपकी पसंद की इमेज हो सकती है. आकार साफ़ बैकग्राउंड स्ट्रोक के साथ दिखते हैं, लेकिन स्टैंप को लाइन के कोनों के आस-पास छोटा नहीं किया जाता - इससे उन्हें कुछ मामलों में काम का बनाने में मदद मिलती है, जैसे कि चलने के दिशा-निर्देशों के बारे में बताने वाले डॉट.
GMSSpriteStyle
का इस्तेमाल करके और इसे सेट करके, इस सुविधा का इस्तेमाल किया जा सकता है
स्टैंप के तौर पर, GMSStrokeStyle
के stampStyle
का इस्तेमाल करें
प्रॉपर्टी.
Swift
let path = GMSMutablePath() path.addLatitude(-37.81319, longitude: 144.96298) path.addLatitude(-31.95285, longitude: 115.85734) let polyline = GMSPolyline(path: path) polyline.strokeWidth = 20 let image = UIImage(named: "imageFromBundleOrAsset")! // Image could be from anywhere let stampStyle = GMSSpriteStyle(image: image) let transparentStampStroke = GMSStrokeStyle.transparentStroke(withStamp: stampStyle) let span = GMSStyleSpan(style: transparentStampStroke) polyline.spans = [span] polyline.map = mapView
Objective-C
GMSMutablePath *path = [GMSMutablePath path]; [path addLatitude:-37.81319 longitude:144.96298]; [path addLatitude:-31.95285 longitude:115.85734]; polyline.strokeWidth = 20; GMSPolyline *polyline = [GMSPolyline polylineWithPath:path]; UIImage *image = [UIImage imageNamed:@"imageFromBundleOrAsset"]; GMSStrokeStyle *transparentStampStroke = [GMSStrokeStyle transparentStrokeWithStampStyle:[GMSSpriteStyle spriteStyleWithImage:image]]; GMSStyleSpan *span = [GMSStyleSpan spanWithStyle:transparentStampStroke]; polyline.spans = @[span]; polyline.map = _mapView;
टेक्सचर स्टैंप्ड पॉलीलाइन
टेक्सचर स्टैंप वाली पॉलीलाइन, रिपीटेड पॉलीलाइन का इस्तेमाल करके आपकी पसंद की बनावट पर काम करती है. आकृतियों को साफ़, ठोस रंग या ग्रेडिएंट के साथ दिखाया जा सकता है बैकग्राउंड स्ट्रोक. ज़ूम लेवल बदलने पर, टेक्सचर का साइज़ भी बदल जाता है. आखिर में मौजूद इमेज किसी खास ज़ूम पर, पाथ के आखिरी या शुरुआती हिस्से या पाथ पॉइंट को काट दिया जाता है लेवल.
GMSTextureStyle
और सेटिंग का इस्तेमाल करके, इस सुविधा का इस्तेमाल किया जा सकता है
इसे एक स्टैंप के तौर पर, GMSStrokeStyle
के stampStyle
का इस्तेमाल करके
प्रॉपर्टी.
Swift
let path = GMSMutablePath() path.addLatitude(-37.81319, longitude: 144.96298) path.addLatitude(-31.95285, longitude: 115.85734) let polyline = GMSPolyline(path: path) polyline.strokeWidth = 20 let redWithStamp = GMSStrokeStyle.solidColor(.red) let image = UIImage(named: "imageFromBundleOrAsset")! // Image could be from anywhere redWithStamp.stampStyle = GMSTextureStyle(image: image) let span = GMSStyleSpan(style: redWithStamp) polyline.spans = [span] polyline.map = mapView
Objective-C
GMSMutablePath *path = [GMSMutablePath path]; [path addLatitude:-37.81319 longitude:144.96298]; [path addLatitude:-31.95285 longitude:115.85734]; GMSPolyline *polyline = [GMSPolyline polylineWithPath:path]; polyline.strokeWidth = 20; GMSStrokeStyle *redWithStamp = [GMSStrokeStyle solidColor:[UIColor redColor]]; UIImage *image = [UIImage imageNamed:@"imageFromBundleOrAsset"]; // Image could be from anywhere redWithStamp.stampStyle = [GMSTextureStyle textureStyleWithImage:image]; GMSStyleSpan *span = [GMSStyleSpan spanWithStyle:redWithStamp]; polyline.spans = @[span]; polyline.map = _mapView;
मैप की क्षमताएं
GMSMapView
पर मौजूद mapCapabilities
प्रॉपर्टी, प्रोग्राम के हिसाब से अपने-आप होने वाली प्रोसेस को जोड़ती है
मैप-विशिष्ट सुविधाओं के लिए जाँच रहा है. यह तब काम आता है, जब आपको यह जानना हो कि
खास एपीआई को कॉल करने से पहले, कुछ मैप capabilities
उपलब्ध हैं. यह
क्वेरी से यह तय होता है कि मैप व्यू, स्प्राइट स्टैंपेड पॉलीलाइन के साथ काम करता है या नहीं.
Swift
let path = GMSMutablePath() path.addLatitude(-37.81319, longitude: 144.96298) path.addLatitude(-31.95285, longitude: 115.85734) let polyline = GMSPolyline(path: path) polyline.strokeWidth = 20 let image = UIImage(named: "imageFromBundleOrAsset")! // Image could be from anywhere let spans: [GMSStyleSpan] if (mapView.mapCapabilities.contains(.spritePolylines)) { let spriteStyle = GMSSpriteStyle(image: image) let stroke = GMSStrokeStyle.transparentStroke(withStamp: spriteStyle) spans = [ GMSStyleSpan(style: stroke) ] } else { let stroke = GMSStrokeStyle.solidColor(.clear) stroke.stampStyle = GMSTextureStyle(image: image) spans = [ GMSStyleSpan(style: stroke) ] } polyline.spans = spans polyline.map = mapView
Objective-C
GMSMutablePath *path = [GMSMutablePath path]; [path addLatitude:-37.81319 longitude:144.96298]; [path addLatitude:-31.95285 longitude:115.85734]; UIImage *_Nonnull image = [UIImage imageNamed:@"imageFromBundleOrAsset"]; // Image could be from anywhere NSArray<GMSStyleSpan *> * spans; if (_mapView.mapCapabilities & GMSMapCapabilityFlagsSpritePolylines) { GMSSpriteStyle *spriteStyle = [GMSSpriteStyle spriteStyleWithImage:image]; GMSStrokeStyle *stroke = [GMSStrokeStyle transparentStrokeWithStampStyle:spriteStyle]; spans = @[ [GMSStyleSpan spanWithStyle:stroke] ]; } else { GMSStrokeStyle *stroke = [GMSStrokeStyle solidColor:UIColor.clearColor]; stroke.stampStyle = [GMSTextureStyle textureStyleWithImage:image]; spans = @[ [GMSStyleSpan spanWithStyle:stroke] ]; } GMSPolyline *polyline = [GMSPolyline polylineWithPath:path]; polyline.strokeWidth = 20; polyline.spans = spans; polyline.map = _mapView;
इस पैटर्न की मदद से, मैप में होने वाले बदलावों के लिए सदस्यता ली जा सकती है और अपडेट पर प्रतिक्रिया दी जा सकती है
व्यू की स्थिति. didChangeMapCapabilities
को इन पर भी लागू किया जा सकता है:
सुविधा के बारे में अपडेट पाने के लिए, GMSMapViewDelegate
उपलब्धता.
पॉलीगॉन
पॉलीगॉन, पॉलीलाइन की तरह होते हैं. इनमें कई
निर्देशांकों को क्रम में लगाया जाता है. हालांकि, विस्तार से जवाब देने के बजाय,
पॉलीगॉन, क्लोज़्ड लूप में ठोस क्षेत्रों को परिभाषित करने के लिए डिज़ाइन किए गए हैं. बहुभुज यह हैं
GMSPolygon
के ज़रिए, iOS के लिए Maps SDK में तय किया गया है
क्लास.
मैप में GMSPolygon
को ठीक वैसे ही जोड़ा जा सकता है जैसे किसी
GMSPolyline
. सबसे पहले, इसका पाथ तय करें. इसके लिए,
संबंधित GMSMutablePath
ऑब्जेक्ट और उसमें पॉइंट जोड़े जा रहे हैं.
ये बिंदु पॉलीगॉन की आउटलाइन बनाते हैं. हर CLLocationCoordinate2D
पृथ्वी की सतह पर एक बिंदु को दिखाता है. रेखाखंड इनके बीच बनाए जाते हैं
उस क्रम में पॉइंट करता है जिसमें आप उन्हें पाथ में जोड़ते हैं.
कोई पॉलीगॉन जोड़ें
- कोई
GMSMutablePath
ऑब्जेक्ट बनाएं. addCoordinate:
की मदद से पाथ में पॉइंट सेट करें याaddLatitude:longitude:
तरीके. ये पॉइंट, रणनीति की मदद से पॉलीगॉन.- पाथ का इस्तेमाल करके, नया
GMSPolygon
ऑब्जेक्ट बनाएं: तर्क है. - अन्य प्रॉपर्टी सेट करें. जैसे,
strokeWidth
,strokeColor
, औरfillColor
, ज़रूरत के हिसाब से. GMSMapView
ऑब्जेक्ट को पॉलीगॉन असाइन करें. इसके लिए,GMSPolygon.map
प्रॉपर्टी.- पॉलीगॉन मैप पर दिखाई देता है.
नीचे दिया गया कोड स्निपेट, मैप में एक रेक्टैंगल जोड़ता है.
Swift
// Create a rectangular path let rect = GMSMutablePath() rect.add(CLLocationCoordinate2D(latitude: 37.36, longitude: -122.0)) rect.add(CLLocationCoordinate2D(latitude: 37.45, longitude: -122.0)) rect.add(CLLocationCoordinate2D(latitude: 37.45, longitude: -122.2)) rect.add(CLLocationCoordinate2D(latitude: 37.36, longitude: -122.2)) // Create the polygon, and assign it to the map. let polygon = GMSPolygon(path: rect) polygon.fillColor = UIColor(red: 0.25, green: 0, blue: 0, alpha: 0.05); polygon.strokeColor = .black polygon.strokeWidth = 2 polygon.map = mapView
Objective-C
// Create a rectangular path GMSMutablePath *rect = [GMSMutablePath path]; [rect addCoordinate:CLLocationCoordinate2DMake(37.36, -122.0)]; [rect addCoordinate:CLLocationCoordinate2DMake(37.45, -122.0)]; [rect addCoordinate:CLLocationCoordinate2DMake(37.45, -122.2)]; [rect addCoordinate:CLLocationCoordinate2DMake(37.36, -122.2)]; // Create the polygon, and assign it to the map. GMSPolygon *polygon = [GMSPolygon polygonWithPath:rect]; polygon.fillColor = [UIColor colorWithRed:0.25 green:0 blue:0 alpha:0.05]; polygon.strokeColor = [UIColor blackColor]; polygon.strokeWidth = 2; polygon.map = mapView;
पॉलीगॉन को मैप में जोड़ने से पहले, उसके लुक को पसंद के मुताबिक बनाया जा सकता है और इसे मैप पर जोड़ने के बाद.
पॉलीगॉन हटाना
किसी पॉलीगॉन की GMSPolygon.map
प्रॉपर्टी को nil
पर सेट करें और पॉलीगॉन को डिटैच करें
layer
को इसके पैरंट से मिली है.
Swift
polygon.map = nil polygon.layer.removeFromSuperLayer()
Objective-C
polygon.map = nil; [polygon.layer removeFromSuperlayer];
सर्कल्स
सामान्य GMSPolygon
क्लास के अलावा,
iOS के लिए Maps SDK टूल में GMSCircle
भी शामिल है. इसकी मदद से,
पृथ्वी की सतह पर वृत्त बनाने के लिए.
एक सर्कल बनाने के लिए, आपको नीचे दी गई दो प्रॉपर्टी देनी होगी:
CLLocationCoordinate2D
के तौर परposition
.- मीटर में
radius
.
इसके बाद, सर्कल को पृथ्वी की सतह पर मौजूद सभी बिंदुओं का सेट माना जाता है
जो बताए गए center
से radius
मीटर दूर है. इसकी वजह से
Maps API द्वारा उपयोग किया जाने वाला मर्केटर प्रोजेक्शन, सपाट सतह पर गोल आकार रेंडर करता है,
यह स्थान के पास स्थित होने पर मैप पर लगभग पूर्ण वृत्त के रूप में दिखाई देता है
भूमध्य रेखा है और वृत्त के रूप में लगातार गैर-वृत्तीय (स्क्रीन पर) दिखाई देता है
भूमध्य रेखा से दूर चला जाता है.
एक मंडली जोड़ना
नीचे दिया गया कोड स्निपेट, मैप पर एक सर्कल जोड़ता है:
Swift
let circleCenter = CLLocationCoordinate2D(latitude: 37.35, longitude: -122.0) let circle = GMSCircle(position: circleCenter, radius: 1000) circle.map = mapView
Objective-C
CLLocationCoordinate2D circleCenter = CLLocationCoordinate2DMake(37.35, -122.0); GMSCircle *circle = [GMSCircle circleWithPosition:circleCenter radius:1000]; circle.map = mapView;
सर्कल को मैप में जोड़ने से पहले, उसके रंग-रूप को पसंद के मुताबिक बनाया जा सकता है और इसे मैप पर जोड़ने के बाद.
मंडली कस्टमाइज़ करना
आप इनकी प्रॉपर्टी में बदलाव करके पसंद के मुताबिक रंग और स्ट्रोक की चौड़ाई तय कर सकते हैं
GMSCircle
. इसमें इन विकल्पों का इस्तेमाल किया जा सकता है:
fillColor
- एक
UIColor
ऑब्जेक्ट, जो मंडली. डिफ़ॉल्ट रूप से, इसे पारदर्शी के तौर पर सेट किया जाता है. strokeColor
- एक
UIColor
ऑब्जेक्ट जो सर्कल के रंग को बताता है आउटलाइन. डिफ़ॉल्ट तौर पर, यहblackColor
पर सेट होता है. strokeWidth
- अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है स्क्रीन बिंदुओं में, वृत्त की आउटलाइन की मोटाई. डिफ़ॉल्ट तौर पर, यह वैल्यू 1 पर सेट होती है. मैप ज़ूम किए जाने पर मोटाई नहीं मापी जाती.
नीचे दिया गया स्निपेट अर्ध-पारदर्शी लाल के साथ मोटा लाल वृत्त जोड़ता है अंदर.
Swift
circle.fillColor = UIColor(red: 0.35, green: 0, blue: 0, alpha: 0.05) circle.strokeColor = .red circle.strokeWidth = 5
Objective-C
circle.fillColor = [UIColor colorWithRed:0.25 green:0 blue:0 alpha:0.05]; circle.strokeColor = [UIColor redColor]; circle.strokeWidth = 5;
खोखला बहुभुज बनाना
आप चाहें, तो एक GMSPolygon
ऑब्जेक्ट में कई पाथ को जोड़ा जा सकता है
जटिल आकार बनाना, जैसे कि भरी हुई अंगूठियां या डोनट (जहां पॉलीगॉन एरिया हों
पॉलीगॉन के अंदर अलग-अलग आकारों के रूप में दिखाई दें). इन्हें समझना मुश्किल होता है:
कई पाथ की कंपोज़िशन.
ऐसे पाथ वाला पॉलीगॉन बनाएं जो
पॉलीगॉन. इसके बाद, पॉलीगॉन की holes
प्रॉपर्टी को वैल्यू के तौर पर, एक या
और GMSPath
ऑब्जेक्ट हैं, जो पॉलीगॉन के अंदर के छेदों के बारे में बताते हैं.
अगर बड़े पाथ के अंदर एक छोटा पाथ पूरी तरह से बंद है, तो यह एक टुकड़ा दिखता है में से बहुभुज को हटा दिया गया है.
नीचे दिया गया कोड सैंपल, दो छेदों वाला पॉलीगॉन बनाता है:
Swift
let hydeParkLocation = CLLocationCoordinate2D(latitude: -33.87344, longitude: 151.21135) let camera = GMSCameraPosition.camera(withTarget: hydeParkLocation, zoom: 16) let mapView = GMSMapView.map(withFrame: .zero, camera: camera) mapView.animate(to: camera) let hydePark = "tpwmEkd|y[QVe@Pk@BsHe@mGc@iNaAKMaBIYIq@qAMo@Eo@@[Fe@DoALu@HUb@c@XUZS^ELGxOhAd@@ZB`@J^BhFRlBN\\BZ@`AFrATAJAR?rAE\\C~BIpD" let archibaldFountain = "tlvmEqq|y[NNCXSJQOB[TI" let reflectionPool = "bewmEwk|y[Dm@zAPEj@{AO" let hollowPolygon = GMSPolygon() hollowPolygon.path = GMSPath(fromEncodedPath: hydePark) hollowPolygon.holes = [GMSPath(fromEncodedPath: archibaldFountain)!, GMSPath(fromEncodedPath: reflectionPool)!] hollowPolygon.fillColor = UIColor(red: 1.0, green: 0.0, blue: 0.0, alpha: 0.2) hollowPolygon.strokeColor = UIColor(red: 1.0, green: 0.0, blue: 0.0, alpha: 1.0) hollowPolygon.strokeWidth = 2 hollowPolygon.map = mapView
Objective-C
CLLocationCoordinate2D hydeParkLocation = CLLocationCoordinate2DMake(-33.87344, 151.21135); GMSCameraPosition *camera = [GMSCameraPosition cameraWithTarget:hydeParkLocation zoom:16]; mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera]; NSString *hydePark = @"tpwmEkd|y[QVe@Pk@BsHe@mGc@iNaAKMaBIYIq@qAMo@Eo@@[Fe@DoALu@HUb@c@XUZS^ELGxOhAd@@ZB`@J^BhFRlBN\\BZ@`AFrATAJAR?rAE\\C~BIpD"; NSString *archibaldFountain = @"tlvmEqq|y[NNCXSJQOB[TI"; NSString *reflectionPool = @"bewmEwk|y[Dm@zAPEj@{AO"; GMSPolygon *hollowPolygon = [[GMSPolygon alloc] init]; hollowPolygon.path = [GMSPath pathFromEncodedPath:hydePark]; hollowPolygon.holes = @[[GMSPath pathFromEncodedPath:archibaldFountain], [GMSPath pathFromEncodedPath:reflectionPool]]; hollowPolygon.fillColor = [UIColor colorWithRed:1.0 green:0.0 blue:0.0 alpha:0.2]; hollowPolygon.strokeColor = [UIColor colorWithRed:1.0 green:0.0 blue:0.0 alpha:1.0]; hollowPolygon.strokeWidth = 2; hollowPolygon.map = mapView;