में एमके मैप व्यू पर एमके रूट पर प्रदर्शित करना मैं दो बिंदुओं के बीच एमकेआरओटीई खोजने के लिए एमकेडिरेक्शन रिक्वेस्ट का उपयोग कर रहा हूं। प्रतिक्रिया इस कोड का उपयोग MKMapView पर प्रदर्शित किया जाएगा:आईओएस 7
MKDirections *directions = [[MKDirections alloc] initWithRequest:request];
[directions calculateDirectionsWithCompletionHandler:^(MKDirectionsResponse *response, NSError *error)
{
if (error)
{
NSLog(@"Error : %@", error);
}
else
{
[_mapView removeOverlays:_mapView.overlays];
for (MKRoute *route in response.routes)
{
[_mapView insertOverlay:route.polyline atIndex:0 level:MKOverlayLevelAboveRoads];
}
}
}];
मेरे सवाल है, अगर वहाँ MKRoute यदि उपयोगकर्ता बढ़ रहा है अद्यतन करने के लिए एक उचित तरीका है। एटीएम मैं
- (void)mapView:(MKMapView *)aMapView didUpdateUserLocation:(MKUserLocation *)aUserLocation
उपयोग कर रहा हूँ आंदोलन पहचान करने के लिए और इस विधि में मैं MKRoute ओवरले को दूर करने और गणना और नए उपयोगकर्ता स्थान के साथ नए जोड़ रहा। मुझे आश्चर्य है कि मार्ग को गणना करने का एक तरीका है और ओवरले प्रोग्रामेटिक रूप से अपडेट करना है?
संपादित करें: मैं सेब देव डॉक्स में https://developer.apple.com/library/ios/documentation/MapKit/Reference/MKRouteStep_class/Reference/Reference.html#//apple_ref/occ/cl/MKRouteStep पाया। मैं मैं
for (MKRoute *route in response.routes)
{
for (MKRouteStep *step in route.steps)
{
[_mapView insertOverlay:step.polyline atIndex:0 level:MKOverlayLevelAboveRoads];
}
}
लेकिन मैं कैसे पहचान सकते हैं जो चरणों के पीछे वास्तविक उपयोगकर्ता स्थान हैं की तरह कुछ करने के लिए लगता है?
संपादित करें: एक अन्य विकल्प एक टाइमर का उपयोग करने के लिए हो सकता है जो ईवेंट को ट्रिगर करता है (पुराने ओवरले को हटाकर और नया जोड़ रहा है)। तुम क्या सोचते हो?
[NSTimer scheduledTimerWithTimeInterval:15 target:self selector:@selector(addRouteOverlay) userInfo:nil repeats:YES];
मैं टाइमर की अनुशंसा नहीं करता क्योंकि आप उपयोगकर्ता को स्थानांतरित नहीं होने के बावजूद मार्ग को अनावश्यक रूप से अपडेट कर सकते हैं। सरल विकल्प यह किया गया है UpUpdateUserLocation में करना, लेकिन केवल तभी जब उपयोगकर्ता अंतिम मीटर के बाद से एक्स मीटर स्थानांतरित कर दिया गया है। असंबद्ध लेकिन यदि आप प्रश्न में सादा "आईओएस" टैग जोड़ते हैं तो यह अधिक ध्यान दे सकता है (साथ ही सिंटैक्स-कोड को हाइलाइट करना)। – Anna
मैंने पहले ऐसा कुछ किया है, लेकिन यह सुनिश्चित नहीं है कि आप केवल रूट मानचित्र बनाना चाहते हैं जब उपयोगकर्ता चल रहा हो। आप पहली बार शुरुआत और अंत बिंदु के बीच मानचित्र पर एमकेपोलीलाइन के साथ मार्ग बना सकते हैं।बाद में यदि उपयोगकर्ता चलता है, तो आप डिफ़ॉल्ट वर्तमान स्थान प्रतीक (नीला रंग छोटा सर्किल) के साथ मानचित्र पर उपयोगकर्ता का अद्यतन स्थान दिखा सकते हैं। कृपया स्पष्ट करें ताकि मैं कुछ सुझाव दे सकूं, –
उपयोगकर्ता का स्थान सही ढंग से प्रदर्शित किया गया है। जैसे ए-> बी-> सी से रूट के लिए उपयोगकर्ता का स्थान ए पर है और मार्ग सही तरीके से प्रदर्शित होता है लेकिन जब उपयोगकर्ता बी में स्थानांतरित होता है तो मार्ग अभी भी ए-> सी से प्रदर्शित होता है, बी-> सी से नहीं। – matthias