IOS将2个标记之间的箭头线绘制到Google Map中

时间:2014-06-16 02:28:25

标签: ios google-maps core-graphics google-maps-sdk-ios polyline

我想用GMSPolyline实现这个类可以绘制箭头而不是直线来显示从一个谷歌地图标记到另一个谷歌地图标记的路径。 Objective C是否有可能使用如下的组合继承两个类? 以下是我的锻炼:

#import <MessageUI/MessageUI.h>
#import <GoogleMaps/GoogleMaps.h>
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>

@interface ClassA : GMSPolyline {
}

-(void)methodA;

@end

@interface ClassB : UIView {
}

-(void)methodB;

@end

@interface MyPolyline : NSObject {
    ClassA *a;
    ClassB *b;
}

-(void)methodA;
-(void)methodB;

@end




- (void)addMarkers
{
    if([array count] > 0){

        [mapView_ clear];
        GMSMutablePath *path = [GMSMutablePath path];
        GMSMutablePath *currentPath = [GMSMutablePath path];

        for (int i = 0; i < [array count]; i++) {

            CheckPoints *cp = [array objectAtIndex:i];
            CLLocationCoordinate2D position = CLLocationCoordinate2DMake(cp.getLatitude , cp.getLongitude);
            GMSMarker *marker = [GMSMarker markerWithPosition:position];
            //  GMSMarker *marker = [[GMSMarker alloc] init];
            marker.position = position;
            NSLog( @"%d", cp.getState );
            NSLog( @"%f", cp.getLatitude);
            NSLog( @"%f", cp.getLongitude );
            NSLog( @"%@", cp.getDesp );
            marker.title = cp.getDesp;

            NSString *tmpLat = [[NSString alloc] initWithFormat:@"%f", position.latitude];
            NSString *tmpLong = [[NSString alloc] initWithFormat:@"%f", position.longitude];
            marker.snippet = [NSString stringWithFormat:@"%@ %@", tmpLat,tmpLong];
            UIColor *color;
            GMSPolyline *polyline ;
            if (cp.getState ==0) {
                color = [UIColor greenColor];
                [path addLatitude:cp.getLatitude longitude:cp.getLongitude];
            } else {
                color = [UIColor redColor];
            }
            if(i > [array indexOfObject:array.lastObject] -2){
                [currentPath addLatitude:cp.getLatitude longitude:cp.getLongitude];
            }
            polyline = [GMSPolyline polylineWithPath:path];
            polyline.geodesic = YES;
            polyline.strokeWidth = 5.f;
         // polyline.strokeColor = [UIColor redColor];
            GMSStrokeStyle *solidRed = [GMSStrokeStyle solidColor:[UIColor redColor]];
            GMSStrokeStyle *solidRGreen = [GMSStrokeStyle solidColor:[UIColor greenColor]];
            polyline.spans = @[[GMSStyleSpan spanWithStyle:solidRed segments:[array count]-1],
                               [GMSStyleSpan spanWithStyle:solidRGreen segments:2]];
            marker.icon = [GMSMarker markerImageWithColor:color];
            marker.map = mapView_;
            polyline.map = mapView_;
        }

    }
}

1 个答案:

答案 0 :(得分:1)

不知道您是否还在寻找答案,但这里有一个选择:将GMSMarker添加自定义箭头图标到相应的路径端点,根据给定线段的斜率(arctan dy / dx),并确保它设置为平面而不是广告牌(因此当用户旋转视图时它会自然旋转)。这是一个截图:

directed GMSPolyline