我正在开发WhirlyGlobe组件测试器应用程序(由mousebird团队在ios中为globe应用程序提供的优秀框架)并尝试创建纬度和经度。我使用这种方法在地球上创造了经度:- (void)addGreatCircles:(LocationInfo *)locations len:(int)len stride:(int)stride offset:(int)offset
并在数组中分配值:LocationInfo locations[NumLocations]
但是当我尝试在地球上创建纬度时,通过给出as:
LocationInfo locations[NumLocations] = {
{"twenty five",0, 180},
{"twenty six",0, -10}
// {"three",30,180.0},
// {"four",30,0},
// {"five",60, 180},
//{"six",60, 0},
}
和儿子......我只能在地球上获得一半的纬度线。我不知道为什么会出现这个问题。这是由于OpenGL还是什么。有人请帮我正确地做。 我给出起点(0,-180)终点(0,0)时的屏幕截图如图IM-1,2所示:
IMAGE-1
IMAGE-2
我需要的是在Globe上绘制的完整纬度线。使用起点(0,0)到终点(0,360)给我一个空白输出(地球上没有画线)。 我已尝试使用起点(0,10)终点(0,-10),以便该线覆盖整个地球但尚未成功。请帮助人!!
答案 0 :(得分:3)
首先,您需要转到github上的develop分支。那是即将发布的2.2版本。
我在测试应用程序中添加了一个完全相同的示例。
以下是我们如何解决这个问题。
- (void)addLinesLon:(float)lonDelta lat:(float)latDelta color:(UIColor *)color
{
NSMutableArray *vectors = [[NSMutableArray alloc] init];
NSDictionary *desc = @{kMaplyColor: color, kMaplySubdivType: kMaplySubdivSimple, kMaplySubdivEpsilon: @(0.001), kMaplyVecWidth: @(4.0), kMaplyDrawPriority: @(1000)};
// Longitude lines
for (float lon = -180;lon < 180;lon += lonDelta)
{
MaplyCoordinate coords[3];
coords[0] = MaplyCoordinateMakeWithDegrees(lon, -90);
coords[1] = MaplyCoordinateMakeWithDegrees(lon, 0);
coords[2] = MaplyCoordinateMakeWithDegrees(lon, +90);
MaplyVectorObject *vec = [[MaplyVectorObject alloc] initWithLineString:coords numCoords:3 attributes:nil];
[vectors addObject:vec];
}
// Latitude lines
for (float lat = -90;lat < 90;lat += latDelta)
{
MaplyCoordinate coords[5];
coords[0] = MaplyCoordinateMakeWithDegrees(-180, lat);
coords[1] = MaplyCoordinateMakeWithDegrees(-90, lat);
coords[2] = MaplyCoordinateMakeWithDegrees(0, lat);
coords[3] = MaplyCoordinateMakeWithDegrees(90, lat);
coords[4] = MaplyCoordinateMakeWithDegrees(+180, lat);
MaplyVectorObject *vec = [[MaplyVectorObject alloc] initWithLineString:coords numCoords:5 attributes:nil];
[vectors addObject:vec];
}
latLonObj = [baseViewC addVectors:vectors desc:desc];
}
WhirlyGlobe-Maply 2.2为矢量渲染和细分添加了一些技巧。您现在可以告诉工具包将细分到epsilon以使它们可以接受。我们也可以在另一个上面渲染一个东西而不用担心z缓冲。所以你去,现在很容易。
这里唯一真正的诡计是我们必须将线条分成几部分。我们需要至少三个点,否则细分逻辑将只检测退化情况。纬度的5点线可以使用一些错误测试逻辑。