2

私のアプリケーションは、次のカバレッジエリアのデータを取得します。これらの境界値を使用して、マップ上に長方形を描画したいと思います。何か考えはありますか?前もって感謝します

左上の境界:30.439217、-95.899668;

右上の境界:30.443953、-94.685679;

左下の境界:28.930662、-95.908595;

右下の境界:28.930061、-94.690486;

4

3 に答える 3

5

線で基本的なものを描きたい場合は、この MKPolyline を使用できます

以下のコードを試してください。デリゲートが mapview オブジェクトに接続されていることを確認してください

- (void) drawRect
{

    CLLocation *coordinates1 =  [[CLLocation alloc] initWithLatitude:30.439217 longitude:-95.899668];

    CLLocation *coordinates2 =  [[CLLocation alloc] initWithLatitude:30.443953 longitude:-94.685679];

    CLLocation *coordinates3 =  [[CLLocation alloc] initWithLatitude:28.930061 longitude:-94.690486];

    CLLocation *coordinates4 =  [[CLLocation alloc] initWithLatitude:28.930662 longitude:-95.908595];


    NSMutableArray *locationCoordinates = [[NSMutableArray alloc] initWithObjects:coordinates1,coordinates2,coordinates3,coordinates4,coordinates1, nil];

    int numberOfCoordinates = [locationCoordinates count];

    CLLocationCoordinate2D coordinates[numberOfCoordinates];


    for (NSInteger i = 0; i < [locationCoordinates count]; i++) {

        CLLocation *location = [locationCoordinates objectAtIndex:i];
        CLLocationCoordinate2D coordinate = location.coordinate;

        coordinates[i] = coordinate;
    }

    MKPolyline *polyLine = [MKPolyline polylineWithCoordinates:coordinates count:numberOfCoordinates];
    [self.myMapView addOverlay:polyLine];


}

- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay {

    MKPolylineView *polylineView = [[MKPolylineView alloc] initWithPolyline:overlay];
    polylineView.strokeColor = [UIColor redColor];
    polylineView.lineWidth = 1.0;

    return polylineView;
}

更新: drawRect 関数の迅速なバージョンは次のとおりです。

func drawRect() {
    let coordinates1 = CLLocation(latitude: 30.439217, longitude: -95.899668)
    let coordinates2 = CLLocation(latitude: 30.443953, longitude: -94.685679)
    let coordinates3 = CLLocation(latitude: 28.930061, longitude: -94.690486)
    let coordinates4 = CLLocation(latitude: 28.930662, longitude: -95.908595)
    let locationCoordinates = [coordinates1,coordinates2,coordinates3,coordinates4,coordinates1]

    let coordinates = locationCoordinates.map { $0.coordinate }

    let polyLine = MKPolyline(coordinates: coordinates, count: coordinates.count)
    mapView.addOver(polyLine)
}

を交換してください

- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay (deprecated)

func mapView(mapView: MKMapView, rendererForOverlay overlay: MKOverlay) -> MKOverlayRenderer
于 2012-11-04T00:37:04.577 に答える
1

あなたは一般的な質問をしたので、答えの一般的なヒントしか提供できません。

MKMapView にはconvertCoordinate:toPointToView:、座標をビュー内のポイントに変換するメソッドがあります。これを使用して、オーバーレイに描画できます。

于 2012-11-04T00:14:43.077 に答える
0

初め:

#import <QuartzCore/QuartzCore.h>

次に、必要な場所でこれを行います。

CLLocationCoordinate2D koor = CLLocationCoordinate2DMake(30.439217,-95.899668);
CLLocationCoordinate2D koor2 = CLLocationCoordinate2DMake(30.443953,-94.685679);
CLLocationCoordinate2D koor3 = CLLocationCoordinate2DMake(28.930662,-95.908595);
CGPoint point1 = [mapView convertCoordinate:koor toPointToView:mapView];
CGPoint point2 = [mapView convertCoordinate:koor2 toPointToView:mapView];
CGPoint point3 = [mapView convertCoordinate:koor3 toPointToView:mapView];
UIView *someView = [[UIView alloc]initWithFrame:CGRectMake(point1.x, point1.y, point2.x-point1.x, point3.y-point1.y)];
[self viewBicimle:someView];
[someView setBackgroundColor:[UIColor clearColor]];
[someView.layer setBorderColor:[[[UIColor blackColor] colorWithAlphaComponent:1.0] CGColor]];
[someView.layer setBorderWidth:1.0];
[mapView addSubview:someView];
[someView release];

ただし、これは不動の一部の MapView でのみ機能します。マップを動かすとスライドして……

于 2012-11-04T00:21:11.863 に答える