• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

IOS将2个GMSMarkers之间的箭头线绘制到谷歌地图中

[复制链接]
菜鸟教程小白 发表于 2022-12-12 22:58:23 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我想用 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/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap