Sunday, 15 March 2015

iphone - MKDirections not showing route on map in iOS -



iphone - MKDirections not showing route on map in iOS -

i working on 1 app, need show route directions between 2 coordinates. have used mkdirections , have passed 2 coordinates source , destination, on mapview not showing route or drawing polyline. below code.in mkdirections showing nil. please allow me know doing wrong.

- (void)viewdidload { [super viewdidload]; // additional setup after loading view, typically nib. self.activityindicator.hidden = yes; self.routedetailsbutton.hidden = yes; self.routedetailsbutton.enabled = no; self.mapview.delegate = self; self.mapview.showsuserlocation = yes; self.navigationitem.title = @"routemaster"; } #pragma mark - mapkit delegate methods - (void)mapview:(mkmapview *)amapview didupdateuserlocation:(mkuserlocation *)userlocation { cllocationcoordinate2d loc = [userlocation.location coordinate]; mkcoordinateregion part = mkcoordinateregionmakewithdistance(loc, 1000.0f, 1000.0f); [self.mapview setregion:region animated:yes]; } - (nsuinteger)supportedinterfaceorientations { homecoming uiinterfaceorientationmaskportrait; } - (ibaction)handleroutepressed:(id)sender { // we're working cllocationcoordinate2d sourcecoords = cllocationcoordinate2dmake(28.6100, 77.2300); mkplacemark *sourceplacemark = [[mkplacemark alloc] initwithcoordinate:sourcecoords addressdictionary:nil]; mkmapitem *srcmapitem = [[mkmapitem alloc]initwithplacemark:sourceplacemark]; cllocationcoordinate2d destinationcoords = cllocationcoordinate2dmake(18.9750, 72.8258); mkplacemark *destinationplacemark = [[mkplacemark alloc] initwithcoordinate:destinationcoords addressdictionary:nil]; mkmapitem *distmapitem = [[mkmapitem alloc]initwithplacemark:destinationplacemark]; mkdirectionsrequest *request = [[mkdirectionsrequest alloc]init]; [request setsource:srcmapitem]; [request setdestination:distmapitem]; mkdirections *direction = [[mkdirections alloc]initwithrequest:request]; [direction calculatedirectionswithcompletionhandler:^(mkdirectionsresponse *response, nserror *error) { if (error) nslog(@"error %@", error.description); else nslog(@"response = %@",response); nsarray *arrroutes = [response routes]; [arrroutes enumerateobjectsusingblock:^(id obj, nsuinteger idx, bool *stop) { mkroute *rout = obj; mkpolyline *line = [rout polyline]; [self.mapview addoverlay:line]; nslog(@"rout name : %@",rout.name); nslog(@"total distance (in meters) :%f",rout.distance); nsarray *steps = [rout steps]; nslog(@"total steps : %lu",(unsigned long)[steps count]); [steps enumerateobjectsusingblock:^(id obj, nsuinteger idx, bool *stop) { nslog(@"rout instruction : %@",[obj instructions]); nslog(@"rout distance : %f",[obj distance]); }]; }]; }]; } #pragma mark - utility methods - (void)plotrouteonmap:(mkroute *)route { if(_routeoverlay) { [self.mapview removeoverlay:_routeoverlay]; } // update ivar _routeoverlay = route.polyline; // add together map [self.mapview addoverlay:_routeoverlay]; } #pragma mark - mkmapviewdelegate methods - (mkoverlayrenderer *)mapview:(mkmapview *)mapview rendererforoverlay:(id<mkoverlay>)overlay { mkpolylinerenderer *renderer = [[mkpolylinerenderer alloc] initwithpolyline:overlay]; renderer.strokecolor = [uicolor redcolor]; renderer.linewidth = 4.0; homecoming renderer; } - (mkoverlayview *)mapview:(mkmapview *)mapview viewforoverlay:(id)overlay { if ([overlay iskindofclass:[mkpolyline class]]) { mkpolylineview* aview = [[mkpolylineview alloc]initwithpolyline:(mkpolyline*)overlay] ; aview.strokecolor = [[uicolor bluecolor] colorwithalphacomponent:0.5]; aview.linewidth = 10; homecoming aview; } homecoming nil; }

add method

-(mkoverlayrenderer *)mapview:(mkmapview *)mapview rendererforoverlay:(id<mkoverlay>)overlay { mkpolylinerenderer * routelinerenderer = [[mkpolylinerenderer alloc] initwithpolyline:overlay]; routelinerenderer.strokecolor = [uicolor bluecolor]; routelinerenderer.linewidth = 4; homecoming routelinerenderer; }

ios iphone mapkit android-mapview

No comments:

Post a Comment