Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/120.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用mkdirections在加利福尼亚寻找方向_Ios_Objective C_Mapkit - Fatal编程技术网

Ios 使用mkdirections在加利福尼亚寻找方向

Ios 使用mkdirections在加利福尼亚寻找方向,ios,objective-c,mapkit,Ios,Objective C,Mapkit,我正在使用 这将在我的应用程序中嵌入地图。 我遇到以下错误: mkDirectionErrorCode=6; mkerrorgeoerror=“-403”; nslocalized description=“方向不可用”; NSlocalizedfailureReason=“无法确定到最近道路的路线” 我已将源坐标设置为苹果总部,目标坐标设置为斯坦福大学。他们都在美国加利福尼亚州,但我还是会出错。 viewController.h文件 ------------------------------

我正在使用 这将在我的应用程序中嵌入地图。 我遇到以下错误: mkDirectionErrorCode=6; mkerrorgeoerror=“-403”; nslocalized description=“方向不可用”; NSlocalizedfailureReason=“无法确定到最近道路的路线”

我已将源坐标设置为苹果总部,目标坐标设置为斯坦福大学。他们都在美国加利福尼亚州,但我还是会出错。
viewController.h文件
--------------------------------
#进口
#进口
#进口
@界面ViewController:UIViewController
@属性(弱,非原子)IBMMapView*myMapView;
-(iAction)按钮:(id)发送方;
@结束
----------------------------------
viewController.m文件
-----------------------------
#导入“ViewController.h”
@界面视图控制器()
@结束
@实现视图控制器
-(无效)viewDidLoad
{
[超级视图下载];
//加载视图后,通常从nib执行任何其他设置。
self.myMapView.delegate=self;
[self.myMapView设置显示位置:是];
NSLog(@“视图加载完成”);
//------------------
NSLog(@“是否已开始执行更新用户位置”);
MKDirectionsRequest*请求=[[MKDirectionsRequest alloc]init];
//request.source=[MKMapItem-mapItemForCurrentLocation];
//设定源
CLLocationCoordinated2D
sourceCoordinate=CLLocationCoordinate2DMake(37.33181122.03118);
MKPlacemark*sourcePlacemark=[[MKPlacemark]
alloc]initWithCoordinate:sourceCoordinate addressDictionary:nil];
MKMapItem*source=[[MKMapItem alloc]initWithPlacemark:sourcePlacemark];
request.source=source;
//设置目的地
CLLocationCoordination2D目标坐标=
CLLocationCoordinate2DMake(37.33182122.03118);
MKPlacemark*目的地placemark=
[[MKPlacemark alloc]initWithCoordinate:destinationCoordinate
地址字典:无];
MKMapItem*destination=[[MKMapItem alloc]initWithPlacemark:destinationPlacemark];
请求。目的地=目的地;
request.requestSalterRoutes=YES;
MKDirections*directions=[[MKDirections alloc]initWithRequest:request];
NSLog(“即将计算方向”);
[方向使用CompletionHandler计算方向:^(mkDirectionResponse
*响应,N错误*错误){
如果(!错误){
NSLog(“计算方向成功”);
[自我展示路线:回应];
}
否则{
NSLog(@“使用完成处理程序计算方向时出错\n%@”,
[错误用户信息];
}
}];
}
-(无效)showRoute:(MKDirectionsResponse*)响应{
NSLog(@“正在执行showRoute函数”);
for(MKRoute*响应中的route.routes){
[self.myMapView添加叠加:route.polyline级别:mkoverlayleveloverroads];
}
}
-(MKOverlayRenderer*)地图视图:(MKMapView*)地图视图渲染器ForOverlay:
(id)覆盖{
NSLog(@“已启动覆盖的渲染器”);
MKPolyline*路径=叠加;
MKPolylineRenderer*渲染器=[[MKPolylineRenderer alloc]initWithPolyline:route];
strokeColor=[UIColor blueColor];
//渲染器。线宽=5.0;
返回渲染器;
}
/*-(void)mapView:(MKMapView*)mapView didUpdateUserLocation:(MKUserLocation)
*)用户位置
{NSLog(@“是否已开始更新用户位置”);
CLLocationCoordinate2D myLocation=[userLocation坐标];
MKCoordinateRegion zoomRegion=MKCoordinateRegionMakeWithDistance(我的位置,2500,
2500);
[self.myMapView设置区域:zoomRegion动画:是];
}
*/
/*-(BOOL)应自动旋转指针面方向:
(UIInterfaceOrientation)到接口方向
{
返回(到接口方向!=UIInterfaceOrientationMaskPortraitUpsideDown);
}
*/
-(iAction)按钮:(id)发送者{
NSString*url=@”http://maps.apple.com/maps?daddr=40.707184,-73.998392";
[[UIApplication sharedApplication]openURL:[NSURL URLWithString:url]];
}
@结束
两个问题:

  • 如果你想让坐标在CA中,那么经度的符号是错误的。我猜你是有意的

  • 源坐标和目标坐标非常非常接近(在苹果的Cupertino停车场中仅相隔几英尺)。为了得到有意义的方向,需要彼此之间的坐标进一步分离

    如果你的目的地是斯坦福大学,请使用37.4300,-122.1700


  • 对不起,我忘了减号。但我试过了,没用。地图视图中显示的地图是缩小后的美国地图,在加利福尼亚州有一个蓝点闪烁。当您将路线作为
    MKPolyLine
    覆盖添加到地图时,它不会更改地图的
    区域。您必须自己完成(显式设置
    区域
    ,使用
    MKMapCamera
    等)。
    I have set my source coordinates to apple headquarter and destination coordinates to stanford universtiy. Both are in usa california and still i get errors.
    
    viewController.h file
    --------------------------------
    
        #import <UIKit/UIKit.h>
        #import <MapKit/MapKit.h>
        #import <CoreLocation/CoreLocation.h>
    
        @interface ViewController : UIViewController <MKMapViewDelegate>
        @property (weak, nonatomic) IBOutlet MKMapView *myMapView;
        - (IBAction)button:(id)sender;
    
        @end
    
    ----------------------------------
    
    viewController.m file
    -----------------------------
    
        #import "ViewController.h"
    
        @interface ViewController ()
    
        @end
    
        @implementation ViewController
    
        - (void)viewDidLoad
        {
            [super viewDidLoad];
            // Do any additional setup after loading the view, typically from a nib.
            self.myMapView.delegate=self;
            [self.myMapView setShowsUserLocation:YES];
            NSLog(@" VIEW DID LOAD FINISHED");
    
            //------------------
            NSLog(@" DID UPDATE USER LOCATION STARTED EXECUTING");
            MKDirectionsRequest *request=[[MKDirectionsRequest alloc]init];
            //request.source=[MKMapItem mapItemForCurrentLocation];
    
            //setting source
            CLLocationCoordinate2D 
            sourceCoordinate=CLLocationCoordinate2DMake(37.33181,122.03118);
            MKPlacemark *sourcePlacemark=[[MKPlacemark 
            alloc]initWithCoordinate:sourceCoordinate addressDictionary:nil];
            MKMapItem *source=[[MKMapItem alloc]initWithPlacemark:sourcePlacemark];
            request.source=source;
    
            //setting destination
             CLLocationCoordinate2D destinationCoordinate=
             CLLocationCoordinate2DMake(37.33182,122.03118);
            MKPlacemark *destinationPlacemark=
            [[MKPlacemark alloc]initWithCoordinate:destinationCoordinate
             addressDictionary:nil];
            MKMapItem *destination=[[MKMapItem alloc]initWithPlacemark:destinationPlacemark];
            request.destination=destination;
    
            request.requestsAlternateRoutes=YES;
            MKDirections *directions=[[MKDirections alloc]initWithRequest:request];
            NSLog(@" ABOUT TO CALCULATE DIRECTIONS");
            [directions calculateDirectionsWithCompletionHandler:^(MKDirectionsResponse
            *response, NSError *error) {
                if (!error){
                    NSLog(@" calculating directions SUCCESSFULL");
                    [self showRoute:response];
                }
                else{
                    NSLog(@"error in calculating directions with completion handler \n%@",
                [error userInfo]);
                }
            }];
    
        }
        -(void)showRoute : (MKDirectionsResponse *) response{
            NSLog(@"showRoute function executing");
            for (MKRoute *route in response.routes) {
                [self.myMapView addOverlay:route.polyline level:MKOverlayLevelAboveRoads];
            }
        }
        -(MKOverlayRenderer*)mapView:(MKMapView *)mapView rendererForOverlay:
           (id<MKOverlay>)overlay{
            NSLog(@" RENDERER FOR OVERLAY STARTED");
            MKPolyline *route=overlay;
            MKPolylineRenderer *renderer=[[MKPolylineRenderer alloc]initWithPolyline:route];
            renderer.strokeColor=[UIColor blueColor];
            //renderer.lineWidth=5.0;
            return renderer;
    
    
        }
    
        /*-(void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation 
           *)userLocation
        {   NSLog(@" DID UPDATE USER LOCATION STARTED");
            CLLocationCoordinate2D myLocation=[userLocation coordinate];
            MKCoordinateRegion zoomRegion=MKCoordinateRegionMakeWithDistance(myLocation, 2500, 
              2500);
    
            [self.myMapView setRegion:zoomRegion animated:YES];
        }
        */
        /*-(BOOL)shouldAutorotateToInterfaceOrientation:
             (UIInterfaceOrientation)toInterfaceOrientation
        {
            return (toInterfaceOrientation != UIInterfaceOrientationMaskPortraitUpsideDown);
    
        }
         */
    
    
        - (IBAction)button:(id)sender {
            NSString *url=@"http://maps.apple.com/maps?daddr=40.707184,-73.998392";
            [[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]];
    
        }
    
        @end