видя, находятся ли координаты текущей позиции в объекте MKOverlay Xcode - PullRequest
0 голосов
/ 17 января 2019

Я работаю над приложением, в котором я хочу узнать, находится ли мое текущее местоположение в наложении MKPolygon. Я действительно не хочу размещать многоугольник на виде карты, я даже не хочу создавать вид карты. Я просто хочу посмотреть, находятся ли мои координаты в разных наложениях во время путешествия.
Это возможно? и если да, то как бы я это сделал. Я пытаюсь сделать это в objc Вот код, но он не работает

 NSDictionary *d1=[NSDictionary dictionaryWithObjectsAndKeys:@"37.57111111",@"x",@"-109.52166667",@"y",nil];
    NSDictionary *d2=[NSDictionary dictionaryWithObjectsAndKeys:@"32.01138889",@"x",@"-109.59000000",@"y",nil];
    NSDictionary *d3=[NSDictionary dictionaryWithObjectsAndKeys:@"31.83166667",@"x",@"-111.95416667",@"y",nil];
    NSDictionary *d4=[NSDictionary dictionaryWithObjectsAndKeys:@"32.34250000",@"x",@"-115.14333333",@"y",nil];
    NSDictionary *d5=[NSDictionary dictionaryWithObjectsAndKeys:@"34.89722222",@"x",@"-115.47611111",@"y",nil];
    NSDictionary *d6=[NSDictionary dictionaryWithObjectsAndKeys:@"37.32083333",@"x",@"-116.02027778",@"y",nil];
    NSDictionary *d7=[NSDictionary dictionaryWithObjectsAndKeys:@"37.53305556",@"x",@"-114.73416667",@"y",nil];
    NSDictionary *d8=[NSDictionary dictionaryWithObjectsAndKeys:@"37.53166667",@"x",@"-114.11277778",@"y",nil];
    NSDictionary *d9=[NSDictionary dictionaryWithObjectsAndKeys:@"37.57111111",@"x",@"-109.52166667",@"y",nil];


NSArray *azcoord = [NSArray arrayWithObjects:d1,d2,d3,d4,d5,d6,d7,d8, nil];
CLLocationCoordinate2D coordinates[azcoord.count];

int coordinatesIndex = 0;

for (NSDictionary * c in azcoord) {
    double x = [[c valueForKey:@"x"] doubleValue];
    double y = [[c valueForKey:@"y"] doubleValue];

    CLLocationCoordinate2D coordinate;
    coordinate.latitude = y;
    coordinate.longitude = x;

    //Put this coordinate in the C array...
    coordinates[coordinatesIndex] = coordinate;

    coordinatesIndex++;
}

//C array is ready, create the polygon...
polygon = [MKPolygon polygonWithCoordinates:coordinates count:azcoord.count];


[self.mapView addOverlay:polygon];

CLLocationCoordinate2D sampleLocation = CLLocationCoordinate2DMake(32.154289,-110.871062);
    MKMapPoint mapPoint = MKMapPointForCoordinate(sampleLocation);
    CGPoint mapPointAsCGP = CGPointMake(mapPoint.x, mapPoint.y);


    if([polygon isKindOfClass:[MKPolygon class]]){
         NSLog(@"YES");
        MKPolygon *polygons = (MKPolygon*) polygon;

        CGMutablePathRef mpr = CGPathCreateMutable();

        MKMapPoint *polygonPoints = polygons.points;

        for (int p=0; p < polygons.pointCount; p++){
            MKMapPoint mp = polygonPoints[p];
            if (p == 0)
                CGPathMoveToPoint(mpr, NULL, mp.x, mp.y);
            else
                CGPathAddLineToPoint(mpr, NULL, mp.x, mp.y);
        }

        if(CGPathContainsPoint(mpr , NULL, mapPointAsCGP, TRUE)){
            NSLog(@"YES");
        }

        CGPathRelease(mpr);
    }

Первый журнал отправляет ДА, а второй нет.

Во-первых, я на самом деле делаю MKPolygon - закрываю его или просто рисую линии. Если я не закрываю это, как мне это сделать?

секунда. Нужно ли мне иметь вид карты и визуализировать многоугольник, чтобы видеть, находится ли внутри него точка?

Любая помощь поможет.

...