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中全部爲空(空)。謝謝!
我把'return view'移到了if的末尾([overlay isKindOfClass:[MKPolygon class]])',但是當我將當前位置更改爲內部或外部時,仍然沒有顯示開關多邊形 - 全是'false' – user2707515
雖然我可以猜到,但我看不到'MKPolygonRenderer'是什麼記錄或它的'pointForMapPoint'函數應該做什麼。你能鏈接到它的一些文檔。 – Craig