OStack程序员社区-中国程序员成长平台

标题: IOS将2个GMSMarkers之间的箭头线绘制到谷歌地图中 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 22:58
标题: IOS将2个GMSMarkers之间的箭头线绘制到谷歌地图中

我想用 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_;
        }

    }
}



Best Answer-推荐答案


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

directed GMSPolyline

关于IOS将2个GMSMarkers之间的箭头线绘制到谷歌地图中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24235945/






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4