2013-08-22 121 views
0

noob here。我已經閱讀了如何檢測MKPolygon中的一個點,但是我在實現它時遇到了困難 - 它可能只是與代碼中檢查用戶位置的部分有關......我不是甚至確定它是否始終如一地檢查。總之,這裏的相關代碼:NSLog檢測在MKPolygon中更新當前位置

- (void)locationManager:(CLLocationManager *)manager 
    didUpdateLocations:(NSArray *)locations { 
self.current = [locations lastObject]; 
NSLog(@"lat%f - lon%f", self.current.coordinate.latitude, self.current.coordinate.longitude); 
NSLog(@"%@", self.mapCIIP); } 

後來

-(MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id <MKOverlay>)overlay{ 
if([overlay isKindOfClass:[MKPolygon class]]){ 
    MKPolygonRenderer *view = [[MKPolygonRenderer alloc] initWithOverlay:overlay]; 
    view.lineWidth=1; 
    view.strokeColor=[UIColor blueColor]; 
    view.fillColor=[[UIColor blueColor] colorWithAlphaComponent:0.5]; 


    return view; 
    CLLocationCoordinate2D mapCoordinate = CLLocationCoordinate2DMake(self.current.coordinate.latitude, self.current.coordinate.longitude); 

    MKMapPoint mapPoint = MKMapPointForCoordinate(mapCoordinate); 
    if (CLLocationCoordinate2DIsValid(mapCoordinate)) { 
     NSLog(@"Coordinate valid"); 
    } else { 
     NSLog(@"Coordinate invalid"); 
    } 

    CGPoint polygonViewPoint = [view pointForMapPoint:mapPoint]; 


    if (CGPathContainsPoint(view.path, NULL, polygonViewPoint, NO)) { 
     self.mapCIIP = @"TRUE"; 
    } 
    else { 
     self.mapCIIP = @"false"; 
    }; 


} 
return nil; } 

我模擬不同的位置在Xcode用它在我的iPhone上運行,並且在緯度/長的更新,它沒有給我什麼,我想要得到我繪製的多邊形中的真/假。在某一時刻,它顯示爲全部爲真,但現在它在NSLog中全部爲空(空)。謝謝!

回答

1

通過函數的部分路徑返回view,因此無法訪問設置mapCIIP的代碼。

+0

我把'return view'移到了if的末尾([overlay isKindOfClass:[MKPolygon class]])',但是當我將當前位置更改爲內部或外部時,仍然沒有顯示開關多邊形 - 全是'false' – user2707515

+0

雖然我可以猜到,但我看不到'MKPolygonRenderer'是什麼記錄或它的'pointForMapPoint'函數應該做什麼。你能鏈接到它的一些文檔。 – Craig

相關問題