Loading...
Searching...
No Matches
LocationWindowMapObjectsExample.m
Go to the documentation of this file.
1#import <Foundation/Foundation.h>
2#import <UIKit/UIKit.h>
3#import <math.h>
4#import <NavigineSDK/NavigineSDK.h>
5
13@interface LocationWindowMapObjectsExample : NSObject
14
15@property (nonatomic, strong) NCLocationWindow *locationWindow;
16@property (nonatomic, strong) NSMutableArray *mapObjects;
17
28- (void)cleanup;
29
30@end
31
32@implementation LocationWindowMapObjectsExample
33
34- (instancetype)init {
35 self = [super init];
36 if (self) {
37 _mapObjects = [NSMutableArray array];
39 }
40 return self;
41}
42
47 NSLog(@"=== LocationWindowMapObjects Example ===");
48
49 // Initialize LocationWindow (in real app, this would be provided by the framework)
50 // self.locationWindow = [self getLocationWindow];
51
53
62
63 [self cleanup];
64}
65
70 NSLog(@"--- LocationPolygon / LocationPolyline records ---");
71
72 // [objc_LocationPolygon_record]
73 NSArray<NCGlobalPoint *> *ring = @[
74 [[NCGlobalPoint alloc] initWithLatitude:55.751 longitude:37.617],
75 [[NCGlobalPoint alloc] initWithLatitude:55.752 longitude:37.618],
76 [[NCGlobalPoint alloc] initWithLatitude:55.751 longitude:37.619],
77 ];
78 NSArray<NSArray<NCGlobalPoint *> *> *holes = @[
79 @[
80 [[NCGlobalPoint alloc] initWithLatitude:55.7512 longitude:37.6174],
81 [[NCGlobalPoint alloc] initWithLatitude:55.7514 longitude:37.6176],
82 [[NCGlobalPoint alloc] initWithLatitude:55.7512 longitude:37.6178],
83 ],
84 ];
85 NCLocationPolygon *locationPolygon = [[NCLocationPolygon alloc] initWithPoints:ring
86 sublocationId:@(7)
87 innerRings:holes];
88 NSLog(@"LocationPolygon: sublocation %@, vertices %lu, holes %lu",
89 locationPolygon.sublocationId,
90 (unsigned long)locationPolygon.points.count,
91 (unsigned long)locationPolygon.innerRings.count);
92 // [objc_LocationPolygon_record]
93
94 // [objc_LocationWindow_addPointBatch]
97 [[NCPointSprite alloc] initWithPosition:[[NCGlobalPoint alloc] initWithLatitude:55.751 longitude:37.617]
98 heading:0
99 color:[UIColor orangeColor]
100 size:5],
101 [[NCPointSprite alloc] initWithPosition:[[NCGlobalPoint alloc] initWithLatitude:55.752 longitude:37.618]
102 heading:90
103 color:[UIColor blueColor]
104 size:5],
105 ] sublocationId:@(7)];
106 NSNumber *hit = [batch hitTest:CGPointMake(12, 8) radius:8];
107 NSLog(@"PointBatch hit %@", hit);
108 // [objc_LocationWindow_addPointBatch]
109
110 // [objc_LocationWindow_addGeoJson]
111 NSString *geoJson = @"{\"type\":\"FeatureCollection\",\"features\":[{\"type\":\"Feature\",\"geometry\":{\"type\":\"Polygon\",\"coordinates\":[[[37.617,55.751],[37.619,55.751],[37.619,55.752],[37.617,55.751]],[[37.6174,55.7512],[37.6176,55.7512],[37.6176,55.7514],[37.6174,55.7512]]]}},{\"type\":\"Feature\",\"geometry\":{\"type\":\"LineString\",\"coordinates\":[[37.617,55.751],[37.620,55.753]]}}]}";
112 NCGeoJsonImport *imported = [self.locationWindow addGeoJson:geoJson sublocationId:@(7)];
113 NSLog(@"GeoJSON polygons %lu, lines %lu",
114 (unsigned long)imported.polygons.count, (unsigned long)imported.polylines.count);
115 // [objc_LocationWindow_addGeoJson]
116
117 // [objc_LocationPolyline_record]
118 NSArray<NCGlobalPoint *> *linePts = @[
119 [[NCGlobalPoint alloc] initWithLatitude:55.751 longitude:37.617],
120 [[NCGlobalPoint alloc] initWithLatitude:55.753 longitude:37.620],
121 ];
122 NCLocationPolyline *locationPolyline = [[NCLocationPolyline alloc] initWithPoints:linePts sublocationId:@(7)];
123 NSLog(@"LocationPolyline points %lu", (unsigned long)locationPolyline.points.count);
124 // [objc_LocationPolyline_record]
125}
126
131 NSLog(@"--- Circle Map Objects ---");
132
133 if (_locationWindow == nil) {
134 NSLog(@"LocationWindow not available yet");
135 return;
136 }
137
138 // [objc_CircleMapObject_constructor]
139 // Create circle map object
140 NCGlobalPoint *center = [[NCGlobalPoint alloc] initWithLatitude:10.0 longitude:20.0];
141 NCCircleMapObject *circleObject = [[NCCircleMapObject alloc] initWithCenter:center radius:5.0];
142 NSLog(@"Created circle map object with center (%f, %f) and radius 5.0", center.latitude, center.longitude);
143 // [objc_CircleMapObject_constructor]
144
145 // [objc_CircleMapObject_getRadius]
146 // Access circle radius
147 double radius = circleObject.radius;
148 NSLog(@"Circle radius: %f", radius);
149 // [objc_CircleMapObject_getRadius]
150
151 // [objc_LocationWindow_addCircleMapObject]
152 // Add circle map object
153 [_locationWindow addCircleMapObject:circleObject];
154 [_mapObjects addObject:circleObject];
155 NSLog(@"Added circle map object");
156 // [objc_LocationWindow_addCircleMapObject]
157
158 // Test multiple circle objects
159 NSArray *circles = @[
160 [[NCCircleMapObject alloc] initWithCenter:[[NCGlobalPoint alloc] initWithLatitude:15.0 longitude:25.0] radius:3.0],
161 [[NCCircleMapObject alloc] initWithCenter:[[NCGlobalPoint alloc] initWithLatitude:20.0 longitude:30.0] radius:7.0],
162 [[NCCircleMapObject alloc] initWithCenter:[[NCGlobalPoint alloc] initWithLatitude:25.0 longitude:35.0] radius:4.0]
163 ];
164
165 for (NCCircleMapObject *circle in circles) {
166 [_locationWindow addCircleMapObject:circle];
167 [_mapObjects addObject:circle];
168 NSLog(@"Added circle at (%f, %f) with radius %f", circle.center.latitude, circle.center.longitude, circle.radius);
169 }
170
171 // [objc_LocationWindow_removeCircleMapObject]
172 // Remove circle map object
173 [_locationWindow removeCircleMapObject:circleObject];
174 [_mapObjects removeObject:circleObject];
175 NSLog(@"Removed circle map object");
176 // [objc_LocationWindow_removeCircleMapObject]
177
178 if (circleObject != nil) {
179 // [objc_CircleMapObject_setPosition]
180 // Set circle position
181 NCGlobalPoint *centerPoint = [[NCGlobalPoint alloc] initWithLatitude:100.0 longitude:200.0];
182 BOOL success = [circleObject setPosition:centerPoint sublocationId:@(7)];
183 NSLog(@"Set circle position to (%f, %f): %@", centerPoint.latitude, centerPoint.longitude, success ? @"YES" : @"NO");
184 // [objc_CircleMapObject_setPosition]
185
186 // [objc_CircleMapObject_setPositionAnimated]
187 // Set circle position with animation
188 NCGlobalPoint *animatedPoint = [[NCGlobalPoint alloc] initWithLatitude:150.0 longitude:250.0];
189 BOOL animatedSuccess = [circleObject setPositionAnimated:animatedPoint duration:2.0 animationType:AnimationTypeLinear];
190 NSLog(@"Set circle position with animation to (%f, %f): %@", animatedPoint.latitude, animatedPoint.longitude, animatedSuccess ? @"YES" : @"NO");
191 // [objc_CircleMapObject_setPositionAnimated]
192
193 // [objc_CircleMapObject_setRadius]
194 // Set circle radius
195 BOOL radiusSuccess = [circleObject setRadius:10.0];
196 NSLog(@"Set circle radius to 10.0 meters: %@", radiusSuccess ? @"YES" : @"NO");
197 // [objc_CircleMapObject_setRadius]
198
199 // [objc_CircleMapObject_setCollisionEnabled]
200 // Enable collision detection
201 BOOL collisionSuccess = [circleObject setCollisionEnabled:YES];
202 NSLog(@"Enabled collision detection for circle: %@", collisionSuccess ? @"YES" : @"NO");
203 // [objc_CircleMapObject_setCollisionEnabled]
204
205 // [objc_CircleMapObject_setBuffer]
206 // Set collision buffer
207 BOOL bufferSuccess = [circleObject setBufferWithWidth:5.0 height:5.0];
208 NSLog(@"Set collision buffer to 5x5 pixels: %@", bufferSuccess ? @"YES" : @"NO");
209 // [objc_CircleMapObject_setBuffer]
210
211 // [objc_CircleMapObject_setOffset]
212 // Set position offset
213 BOOL offsetSuccess = [circleObject setOffsetWithX:2.0 longitude:3.0];
214 NSLog(@"Set position offset to (2.0, 3.0) pixels: %@", offsetSuccess ? @"YES" : @"NO");
215 // [objc_CircleMapObject_setOffset]
216
217 // [objc_CircleMapObject_setOutlineColor]
218 // Set outline color
219 BOOL outlineColorSuccess = [circleObject setOutlineColor:[UIColor colorWithRed:0.0 green:0.0 blue:1.0 alpha:1.0]];
220 NSLog(@"Set circle outline color to blue: %@", outlineColorSuccess ? @"YES" : @"NO");
221 // [objc_CircleMapObject_setOutlineColor]
222
223 // [objc_CircleMapObject_setOutlineAlpha]
224 // Set outline alpha
225 BOOL outlineAlphaSuccess = [circleObject setOutlineAlpha:0.5];
226 NSLog(@"Set circle outline alpha to 0.5: %@", outlineAlphaSuccess ? @"YES" : @"NO");
227 // [objc_CircleMapObject_setOutlineAlpha]
228
229 // [objc_CircleMapObject_setOutlineRadius]
230 // Set outline radius
231 BOOL outlineRadiusSuccess = [circleObject setOutlineRadius:2.0];
232 NSLog(@"Set circle outline radius to 2.0: %@", outlineRadiusSuccess ? @"YES" : @"NO");
233 // [objc_CircleMapObject_setOutlineRadius]
234
235 // [objc_CircleMapObject_setColor]
236 // Set circle color
237 BOOL colorSuccess = [circleObject setColor:[UIColor colorWithRed:1.0 green:0.0 blue:0.0 alpha:0.8]];
238 NSLog(@"Set circle color to red with 80%% opacity: %@", colorSuccess ? @"YES" : @"NO");
239 // [objc_CircleMapObject_setColor]
240
241 // [objc_CircleMapObject_setPriority]
242 // Set rendering priority
243 BOOL prioritySuccess = [circleObject setPriority:1];
244 NSLog(@"Set rendering priority to 1: %@", prioritySuccess ? @"YES" : @"NO");
245 // [objc_CircleMapObject_setPriority]
246
247 // [objc_MapObject_setVisible]
248 // Set visibility
249 BOOL visibleSuccess = [circleObject setVisible:YES];
250 NSLog(@"Set circle visibility to true: %@", visibleSuccess ? @"YES" : @"NO");
251 // [objc_MapObject_setVisible]
252
253 // [objc_CircleMapObject_getMapObjectType]
254 // Get map object type
255 NCMapObjectType objectType = circleObject.mapObjectType;
256 NSLog(@"Circle map object type: %@", objectType);
257 // [objc_CircleMapObject_getMapObjectType]
258
259 // [objc_MapObject_setAlpha]
260 // Set alpha transparency
261 BOOL alphaSuccess = [circleObject setAlpha:0.7];
262 NSLog(@"Set circle alpha to 0.7: %@", alphaSuccess ? @"YES" : @"NO");
263 // [objc_MapObject_setAlpha]
264
265 // [objc_MapObject_setInteractive]
266 // Set interactive mode
267 BOOL interactiveSuccess = [circleObject setInteractive:YES];
268 NSLog(@"Set circle interactive to true: %@", interactiveSuccess ? @"YES" : @"NO");
269 // [objc_MapObject_setInteractive]
270
271 // [objc_MapObject_setTitle]
272 // Set title
273 BOOL titleSuccess = [circleObject setTitle:@"Circle Object"];
274 NSLog(@"Set circle title to 'Circle Object': %@", titleSuccess ? @"YES" : @"NO");
275 // [objc_MapObject_setTitle]
276
277 // [objc_TitleStyle_record]
278 NCTitleStyle *titleStyle = [[NCTitleStyle alloc] init];
279 titleStyle.fontSize = 14;
280 titleStyle.color = @"#3366CC";
281 titleStyle.outlineColor = @"#FFFFFF";
282 titleStyle.anchor = NCTitleAnchorTop;
283 titleStyle.visible = YES;
284 // [objc_TitleStyle_record]
285
286 // [objc_MapObject_setTitleWithStyle]
287 // Set title with style
288 BOOL titleStyleSuccess = [circleObject setTitleWithStyle:@"Styled Circle" style:titleStyle];
289 NSLog(@"Set circle title with style: %@", titleStyleSuccess ? @"YES" : @"NO");
290 // [objc_MapObject_setTitleWithStyle]
291
292 // [objc_MapObject_setData]
293 // Set custom data
294 NSDictionary *customData = @{@"key": @"value", @"number": @"42"};
295 BOOL dataSuccess = [circleObject setData:customData];
296 NSLog(@"Set circle custom data: %@", dataSuccess ? @"YES" : @"NO");
297 // [objc_MapObject_setData]
298
299 // [objc_MapObject_getId]
300 // Get object ID
301 NSInteger objectId = circleObject.id;
302 NSLog(@"Circle object ID: %ld", (long)objectId);
303 // [objc_MapObject_getId]
304
305 // [objc_MapObject_getType]
306 // Get object type
307 NSString *objectTypeString = circleObject.type;
308 NSLog(@"Circle object type: %@", objectTypeString);
309 // [objc_MapObject_getType]
310
311 // [objc_MapObject_getData]
312 // Get custom data
313 NSDictionary *retrievedData = circleObject.data;
314 NSLog(@"Circle custom data: %@", retrievedData);
315 // [objc_MapObject_getData]
316 }
317}
318
323 NSLog(@"--- Icon Map Objects ---");
324
325 if (_locationWindow == nil) {
326 NSLog(@"LocationWindow not available yet");
327 return;
328 }
329
330 // [objc_IconMapObject_constructor]
331 // Create icon map object
332 NCGlobalPoint *position = [[NCGlobalPoint alloc] initWithLatitude:30.0 longitude:40.0];
333 NCIconMapObject *iconObject = [[NCIconMapObject alloc] initWithPosition:position];
334 NSLog(@"Created icon map object at (%f, %f)", position.latitude, position.longitude);
335 // [objc_IconMapObject_constructor]
336
337 // [objc_IconMapObject_setBitmap]
338 UIImage *iconImage = [UIImage imageWithContentsOfFile:@"/path/to/icon.png"];
339 BOOL bitmapSuccess = (iconImage != nil) && [iconObject setBitmap:iconImage];
340 NSLog(@"Set icon bitmap (UIImage): %@", bitmapSuccess ? @"YES" : @"NO");
341 // [objc_IconMapObject_setBitmap]
342
343 // [objc_IconMapObject_setFlat]
344 // Set icon flat mode
345 BOOL flatSuccess = [iconObject setFlat:YES];
346 NSLog(@"Set icon flat mode to true: %@", flatSuccess ? @"YES" : @"NO");
347 // [objc_IconMapObject_setFlat]
348
349 // [objc_IconMapObject_setSize]
350 // Set icon size
351 NCSize *size = [[NCSize alloc] initWithWidth:32.0 height:32.0];
352 BOOL sizeSuccess = [iconObject setSize:size];
353 NSLog(@"Set icon size to (%.1f, %.1f): %@", size.width, size.height, sizeSuccess ? @"YES" : @"NO");
354 // [objc_IconMapObject_setSize]
355
356 // [objc_IconMapObject_setAngle]
357 // Set icon rotation angle (radians)
358 BOOL angleSuccess = [iconObject setAngle:(float)(M_PI / 4.0)];
359 NSLog(@"Set icon rotation angle to π/4: %@", angleSuccess ? @"YES" : @"NO");
360 // [objc_IconMapObject_setAngle]
361
362 // [objc_IconMapObject_setAngleAnimated]
363 // Set icon rotation with animation (radians)
364 BOOL angleAnimatedSuccess = [iconObject setAngleAnimated:(float)(M_PI / 2.0) duration:2.0 animationType:NCSine];
365 NSLog(@"Set icon rotation with animation to π/2: %@", angleAnimatedSuccess ? @"YES" : @"NO");
366 // [objc_IconMapObject_setAngleAnimated]
367
368 // [objc_IconMapObject_setCollisionEnabled]
369 // Enable collision detection
370 BOOL collisionSuccess = [iconObject setCollisionEnabled:YES];
371 NSLog(@"Enabled collision detection for icon: %@", collisionSuccess ? @"YES" : @"NO");
372 // [objc_IconMapObject_setCollisionEnabled]
373
374 // [objc_IconMapObject_setBuffer]
375 // Set collision buffer
376 BOOL bufferSuccess = [iconObject setBufferWithWidth:10.0 height:10.0];
377 NSLog(@"Set collision buffer to 10x10 pixels: %@", bufferSuccess ? @"YES" : @"NO");
378 // [objc_IconMapObject_setBuffer]
379
380 // [objc_IconMapObject_setPosition]
381 // Set icon position
382 NCGlobalPoint *newPosition = [[NCGlobalPoint alloc] initWithLatitude:35.0 longitude:45.0];
383 BOOL positionSuccess = [iconObject setPosition:newPosition sublocationId:@(7)];
384 NSLog(@"Set icon position to (%.1f, %.1f): %@", newPosition.latitude, newPosition.longitude, positionSuccess ? @"YES" : @"NO");
385 // [objc_IconMapObject_setPosition]
386
387 // [objc_IconMapObject_setPositionAnimated]
388 // Set icon position with animation
389 NCGlobalPoint *animatedPosition = [[NCGlobalPoint alloc] initWithLatitude:40.0 longitude:50.0];
390 BOOL animatedSuccess = [iconObject setPositionAnimated:animatedPosition duration:2.0 animationType:NCLinear];
391 NSLog(@"Set icon position with animation to (%.1f, %.1f): %@", animatedPosition.latitude, animatedPosition.longitude, animatedSuccess ? @"YES" : @"NO");
392 // [objc_IconMapObject_setPositionAnimated]
393
394 // [objc_IconMapObject_setOffset]
395 // Set icon offset
396 BOOL offsetSuccess = [iconObject setOffsetWithWidth:5.0 height:5.0];
397 NSLog(@"Set icon offset to 5x5 pixels: %@", offsetSuccess ? @"YES" : @"NO");
398 // [objc_IconMapObject_setOffset]
399
400 // [objc_IconMapObject_setPriority]
401 // Set icon priority
402 BOOL prioritySuccess = [iconObject setPriority:1];
403 NSLog(@"Set icon priority to 1: %@", prioritySuccess ? @"YES" : @"NO");
404 // [objc_IconMapObject_setPriority]
405
406 // [objc_IconMapObject_setVisible]
407 // Set visibility
408 BOOL visibleSuccess = [iconObject setVisible:YES];
409 NSLog(@"Set icon visibility to true: %@", visibleSuccess ? @"YES" : @"NO");
410 // [objc_IconMapObject_setVisible]
411
412 // [objc_IconMapObject_getMapObjectType]
413 // Get map object type
414 NCMapObjectType objectType = iconObject.mapObjectType;
415 NSLog(@"Icon map object type: %@", objectType);
416 // [objc_IconMapObject_getMapObjectType]
417
418 // [objc_MapObject_setAlpha_1]
419 // Set alpha transparency
420 BOOL alphaSuccess = [iconObject setAlpha:0.8];
421 NSLog(@"Set icon alpha to 0.8: %@", alphaSuccess ? @"YES" : @"NO");
422 // [objc_MapObject_setAlpha_1]
423
424 // [objc_MapObject_setInteractive_1]
425 // Set interactive mode
426 BOOL interactiveSuccess = [iconObject setInteractive:YES];
427 NSLog(@"Set icon interactive to true: %@", interactiveSuccess ? @"YES" : @"NO");
428 // [objc_MapObject_setInteractive_1]
429
430 // [objc_MapObject_setTitle_1]
431 // Set title
432 BOOL titleSuccess = [iconObject setTitle:@"Icon Object"];
433 NSLog(@"Set icon title to 'Icon Object': %@", titleSuccess ? @"YES" : @"NO");
434 // [objc_MapObject_setTitle_1]
435
436 // [objc_MapObject_setData_1]
437 // Set custom data
438 NSDictionary *customData = @{@"key": @"value", @"number": @"42"};
439 BOOL dataSuccess = [iconObject setData:customData];
440 NSLog(@"Set icon custom data: %@", dataSuccess ? @"YES" : @"NO");
441 // [objc_MapObject_setData_1]
442
443 // [objc_MapObject_getId_1]
444 // Get object ID
445 NSInteger objectId = iconObject.id;
446 NSLog(@"Icon object ID: %ld", (long)objectId);
447 // [objc_MapObject_getId_1]
448
449 // [objc_MapObject_getType_1]
450 // Get object type
451 NSString *objectTypeString = iconObject.type;
452 NSLog(@"Icon object type: %@", objectTypeString);
453 // [objc_MapObject_getType_1]
454
455 // [objc_MapObject_getData_1]
456 // Get custom data
457 NSDictionary *retrievedData = iconObject.data;
458 NSLog(@"Icon custom data: %@", retrievedData);
459 // [objc_MapObject_getData_1]
460
461 // [objc_LocationWindow_addIconMapObject]
462 // Add icon map object
463 [_locationWindow addIconMapObject:iconObject];
464 [_mapObjects addObject:iconObject];
465 NSLog(@"Added icon map object");
466 // [objc_LocationWindow_addIconMapObject]
467
468 // Test multiple icon objects
469 NSArray *icons = @[
470 [[NCIconMapObject alloc] initWithPosition:[[NCGlobalPoint alloc] initWithLatitude:35.0 longitude:45.0]],
471 [[NCIconMapObject alloc] initWithPosition:[[NCGlobalPoint alloc] initWithLatitude:40.0 longitude:50.0]],
472 [[NCIconMapObject alloc] initWithPosition:[[NCGlobalPoint alloc] initWithLatitude:45.0 longitude:55.0]]
473 ];
474
475 UIImage *loopIcon = [UIImage imageWithContentsOfFile:@"/path/to/icon.png"];
476 for (NCIconMapObject *icon in icons) {
477 if (loopIcon != nil) {
478 [icon setBitmap:loopIcon];
479 }
480 [_locationWindow addIconMapObject:icon];
481 [_mapObjects addObject:icon];
482 NSLog(@"Added icon at (%f, %f)", icon.position.latitude, icon.position.longitude);
483 }
484
485 // [objc_LocationWindow_removeIconMapObject]
486 // Remove icon map object
487 [_locationWindow removeIconMapObject:iconObject];
488 [_mapObjects removeObject:iconObject];
489 NSLog(@"Removed icon map object");
490 // [objc_LocationWindow_removeIconMapObject]
491}
492
497 NSLog(@"--- Model Map Objects ---");
498
499 if (_locationWindow == nil) {
500 NSLog(@"LocationWindow not available yet");
501 return;
502 }
503
504 // [objc_LocationWindow_addModelMapObject]
506 NSLog(@"Added model map object: %@", modelObject != nil ? @"YES" : @"NO");
507 // [objc_LocationWindow_addModelMapObject]
508
509 if (modelObject == nil) {
510 return;
511 }
512
513 // [objc_ModelMapObject_setPosition]
514 NCGlobalPoint *modelPoint = [[NCGlobalPoint alloc] initWithLatitude:12.0 longitude:34.0];
515 BOOL posOk = [modelObject setPosition:modelPoint sublocationId:@(7)];
516 NSLog(@"Model setPosition: %@", posOk ? @"YES" : @"NO");
517 // [objc_ModelMapObject_setPosition]
518
519 // [objc_ModelMapObject_setPositionAnimated]
520 NCGlobalPoint *animatedModelPoint = [[NCGlobalPoint alloc] initWithLatitude:15.0 longitude:40.0];
521 BOOL posAnimOk = [modelObject setPositionAnimated:animatedModelPoint duration:0.5 animationType:AnimationTypeSine];
522 NSLog(@"Model setPositionAnimated: %@", posAnimOk ? @"YES" : @"NO");
523 // [objc_ModelMapObject_setPositionAnimated]
524
525 // [objc_ModelMapObject_setModel]
526 UIImage *texture = [UIImage imageWithContentsOfFile:@"/path/to/model_texture.png"];
527 if (texture != nil) {
528 id<NCModelProvider> provider = [NCModelProviderFactory fromFile:@"/path/to/model.obj" texture:texture];
529 BOOL modelOk = [modelObject setModel:provider];
530 NSLog(@"Model setModel: %@", modelOk ? @"YES" : @"NO");
531 }
532 // [objc_ModelMapObject_setModel]
533
534 // [objc_ModelMapObject_setSize]
535 BOOL sizeOk = [modelObject setSizeWithWidth:64.0 height:64.0];
536 NSLog(@"Model setSize: %@", sizeOk ? @"YES" : @"NO");
537 // [objc_ModelMapObject_setSize]
538
539 // [objc_ModelMapObject_setCollisionEnabled]
540 BOOL collOk = [modelObject setCollisionEnabled:YES];
541 NSLog(@"Model setCollisionEnabled: %@", collOk ? @"YES" : @"NO");
542 // [objc_ModelMapObject_setCollisionEnabled]
543
544 // [objc_ModelMapObject_setAngle]
545 BOOL angleOk = [modelObject setAngle:(float)(M_PI / 4.0)];
546 NSLog(@"Model setAngle: %@", angleOk ? @"YES" : @"NO");
547 // [objc_ModelMapObject_setAngle]
548
549 // [objc_ModelMapObject_setAngleAnimated]
550 BOOL angleAnimOk = [modelObject setAngleAnimated:(float)(M_PI / 2.0) duration:0.5 animationType:AnimationTypeQuint];
551 NSLog(@"Model setAngleAnimated: %@", angleAnimOk ? @"YES" : @"NO");
552 // [objc_ModelMapObject_setAngleAnimated]
553
554 // [objc_ModelMapObject_setBuffer]
555 BOOL bufOk = [modelObject setBufferWithWidth:4.0 height:4.0];
556 NSLog(@"Model setBuffer: %@", bufOk ? @"YES" : @"NO");
557 // [objc_ModelMapObject_setBuffer]
558
559 // [objc_ModelMapObject_setPriority]
560 BOOL priOk = [modelObject setPriority:10.0];
561 NSLog(@"Model setPriority: %@", priOk ? @"YES" : @"NO");
562 // [objc_ModelMapObject_setPriority]
563
564 // [objc_LocationWindow_removeModelMapObject]
565 BOOL removed = [_locationWindow removeModelMapObject:modelObject];
566 NSLog(@"Removed model map object: %@", removed ? @"YES" : @"NO");
567 // [objc_LocationWindow_removeModelMapObject]
568}
569
574 NSLog(@"--- Polygon Map Objects ---");
575
576 if (_locationWindow == nil) {
577 NSLog(@"LocationWindow not available yet");
578 return;
579 }
580
581 // [objc_LocationWindow_addPolygonMapObject]
582 // Add polygon map object
584 NSLog(@"Added polygon map object");
585 // [objc_LocationWindow_addPolygonMapObject]
586
587 if (polygonObject != nil) {
588 // [objc_PolygonMapObject_setPolygon]
589 // Set polygon geometry
590 NSArray<NCGlobalPoint *> *points = @[
591 [[NCGlobalPoint alloc] initWithLatitude:100.0 longitude:200.0],
592 [[NCGlobalPoint alloc] initWithLatitude:150.0 longitude:250.0],
593 [[NCGlobalPoint alloc] initWithLatitude:200.0 longitude:200.0],
594 [[NCGlobalPoint alloc] initWithLatitude:150.0 longitude:150.0],
595 ];
596 NCLocationPolygon *polygon = [[NCLocationPolygon alloc] initWithPoints:points sublocationId:@(0) innerRings:@[]];
597 BOOL success = [polygonObject setPolygon:polygon];
598 NSLog(@"Set polygon with %lu points: %@", (unsigned long)points.count, success ? @"YES" : @"NO");
599 // [objc_PolygonMapObject_setPolygon]
600
601 // [objc_PolygonMapObject_setColor]
602 // Set polygon color
603 BOOL colorSuccess = [polygonObject setColor:[UIColor colorWithRed:0.0 green:1.0 blue:0.0 alpha:0.7]];
604 NSLog(@"Set polygon color to green with 70%% opacity: %@", colorSuccess ? @"YES" : @"NO");
605 // [objc_PolygonMapObject_setColor]
606
607 // [objc_PolygonMapObject_setVisible]
608 // Set visibility
609 BOOL visibleSuccess = [polygonObject setVisible:YES];
610 NSLog(@"Set polygon visibility to true: %@", visibleSuccess ? @"YES" : @"NO");
611 // [objc_PolygonMapObject_setVisible]
612
613 // [objc_PolygonMapObject_getMapObjectType]
614 // Get map object type
615 NCMapObjectType objectType = polygonObject.mapObjectType;
616 NSLog(@"Polygon map object type: %@", objectType);
617 // [objc_PolygonMapObject_getMapObjectType]
618
619 // [objc_PolygonMapObject_setOrder]
620 // Set polygon rendering order
621 BOOL orderSuccess = [polygonObject setOrder:2];
622 NSLog(@"Set polygon rendering order to 2: %@", orderSuccess ? @"YES" : @"NO");
623 // [objc_PolygonMapObject_setOrder]
624
625 // [objc_PolygonMapObject_setOutlineColor]
626 // Set polygon outline color
627 BOOL outlineColorSuccess = [polygonObject setOutlineColor:[UIColor colorWithRed:0.0 green:0.0 blue:1.0 alpha:1.0]];
628 NSLog(@"Set polygon outline color to blue: %@", outlineColorSuccess ? @"YES" : @"NO");
629 // [objc_PolygonMapObject_setOutlineColor]
630
631 // [objc_PolygonMapObject_setOutlineWidth]
632 // Set polygon outline width
633 BOOL outlineWidthSuccess = [polygonObject setOutlineWidth:2.0];
634 NSLog(@"Set polygon outline width to 2.0 pixels: %@", outlineWidthSuccess ? @"YES" : @"NO");
635 // [objc_PolygonMapObject_setOutlineWidth]
636
637 // [objc_PolygonMapObject_setOutlineAlpha]
638 // Set polygon outline alpha
639 BOOL outlineAlphaSuccess = [polygonObject setOutlineAlpha:0.8];
640 NSLog(@"Set polygon outline alpha to 0.8: %@", outlineAlphaSuccess ? @"YES" : @"NO");
641 // [objc_PolygonMapObject_setOutlineAlpha]
642
643 // [objc_PolygonMapObject_setOutlineOrder]
644 // Set polygon outline order
645 BOOL outlineOrderSuccess = [polygonObject setOutlineOrder:1];
646 NSLog(@"Set polygon outline order to 1: %@", outlineOrderSuccess ? @"YES" : @"NO");
647 // [objc_PolygonMapObject_setOutlineOrder]
648
649 // [objc_MapObject_setAlpha_2]
650 // Set alpha transparency
651 BOOL alphaSuccess = [polygonObject setAlpha:0.6];
652 NSLog(@"Set polygon alpha to 0.6: %@", alphaSuccess ? @"YES" : @"NO");
653 // [objc_MapObject_setAlpha_2]
654
655 // [objc_MapObject_setInteractive_2]
656 // Set interactive mode
657 BOOL interactiveSuccess = [polygonObject setInteractive:YES];
658 NSLog(@"Set polygon interactive to true: %@", interactiveSuccess ? @"YES" : @"NO");
659 // [objc_MapObject_setInteractive_2]
660
661 // [objc_MapObject_setTitle_2]
662 // Set title
663 BOOL titleSuccess = [polygonObject setTitle:@"Polygon Object"];
664 NSLog(@"Set polygon title to 'Polygon Object': %@", titleSuccess ? @"YES" : @"NO");
665 // [objc_MapObject_setTitle_2]
666
667 // [objc_MapObject_setData_2]
668 // Set custom data
669 NSDictionary *customData = @{@"key": @"value", @"number": @"42"};
670 BOOL dataSuccess = [polygonObject setData:customData];
671 NSLog(@"Set polygon custom data: %@", dataSuccess ? @"YES" : @"NO");
672 // [objc_MapObject_setData_2]
673
674 // [objc_MapObject_getId_2]
675 // Get object ID
676 NSInteger objectId = polygonObject.id;
677 NSLog(@"Polygon object ID: %ld", (long)objectId);
678 // [objc_MapObject_getId_2]
679
680 // [objc_MapObject_getType_2]
681 // Get object type
682 NSString *objectTypeString = polygonObject.type;
683 NSLog(@"Polygon object type: %@", objectTypeString);
684 // [objc_MapObject_getType_2]
685
686 // [objc_MapObject_getData_2]
687 // Get custom data
688 NSDictionary *retrievedData = polygonObject.data;
689 NSLog(@"Polygon custom data: %@", retrievedData);
690 // [objc_MapObject_getData_2]
691 }
692
693 // [objc_LocationWindow_removePolygonMapObject]
694 // Remove polygon map object
695 if (polygonObject != nil) {
696 BOOL removed = [_locationWindow removePolygonMapObject:polygonObject];
697 NSLog(@"Removed polygon map object: %@", removed ? @"YES" : @"NO");
698 }
699 // [objc_LocationWindow_removePolygonMapObject]
700
701 // Test multiple polygon objects
702 NSMutableArray *polygons = [NSMutableArray array];
703 for (int i = 0; i < 3; i++) {
705 if (polygon != nil) {
706 NSArray<NCGlobalPoint *> *points = @[
707 [[NCGlobalPoint alloc] initWithLatitude:300.0 + i * 50 longitude:400.0 + i * 50],
708 [[NCGlobalPoint alloc] initWithLatitude:350.0 + i * 50 longitude:450.0 + i * 50],
709 [[NCGlobalPoint alloc] initWithLatitude:400.0 + i * 50 longitude:400.0 + i * 50],
710 [[NCGlobalPoint alloc] initWithLatitude:350.0 + i * 50 longitude:350.0 + i * 50],
711 ];
712 NCLocationPolygon *polygonGeometry = [[NCLocationPolygon alloc] initWithPoints:points sublocationId:@(0) innerRings:@[]];
713 [polygon setPolygon:polygonGeometry];
714 [polygon setColor:[UIColor colorWithRed:0.0 green:0.0 blue:1.0 alpha:0.5]];
715 [polygons addObject:polygon];
716 NSLog(@"Created polygon %d with %lu points", i, (unsigned long)points.count);
717 }
718 }
719
720 for (int i = 0; i < polygons.count; i++) {
721 [_locationWindow removePolygonMapObject:polygons[i]];
722 NSLog(@"Removed polygon %d", i);
723 }
724}
725
730 NSLog(@"--- Polyline Map Objects ---");
731
732 if (_locationWindow == nil) {
733 NSLog(@"LocationWindow not available yet");
734 return;
735 }
736
737 // [objc_PolylineMapObject_constructor]
738 // Create polyline map object
739 NSArray<NCGlobalPoint *> *points = @[
740 [[NCGlobalPoint alloc] initWithLatitude:100.0 longitude:110.0],
741 [[NCGlobalPoint alloc] initWithLatitude:105.0 longitude:115.0],
742 [[NCGlobalPoint alloc] initWithLatitude:110.0 longitude:120.0],
743 [[NCGlobalPoint alloc] initWithLatitude:115.0 longitude:125.0],
744 ];
745 NCLocationPolyline *polyline = [[NCLocationPolyline alloc] initWithPoints:points sublocationId:@(0)];
746 NCPolylineMapObject *polylineObject = [[NCPolylineMapObject alloc] initWithPolyline:polyline];
747 NSLog(@"Created polyline map object with %lu points", (unsigned long)points.count);
748 // [objc_PolylineMapObject_constructor]
749
750 // [objc_PolylineMapObject_getPolyline]
751 // Access polyline
752 NCLocationPolyline *polylineShape = polylineObject.polyline;
753 NSLog(@"Polyline has %lu points", (unsigned long)polylineShape.polyline.points.count);
754 // [objc_PolylineMapObject_getPolyline]
755
756 // [objc_LocationWindow_addPolylineMapObject]
757 // Add polyline map object
758 [_locationWindow addPolylineMapObject:polylineObject];
759 [_mapObjects addObject:polylineObject];
760 NSLog(@"Added polyline map object");
761 // [objc_LocationWindow_addPolylineMapObject]
762
763 // Test multiple polyline objects
764 NSArray *polylines = @[
765 [[NCPolylineMapObject alloc] initWithPolyline:[[NCLocationPolyline alloc] initWithPolyline:[[NCPolyline alloc] initWithPoints:@[
766 [[NCGlobalPoint alloc] initWithLatitude:120.0 longitude:130.0],
767 [[NCGlobalPoint alloc] initWithLatitude:125.0 longitude:135.0],
768 [[NCGlobalPoint alloc] initWithLatitude:130.0 longitude:140.0],
769 ]] locationId:1 sublocationId:0]],
770 [[NCPolylineMapObject alloc] initWithPolyline:[[NCLocationPolyline alloc] initWithPolyline:[[NCPolyline alloc] initWithPoints:@[
771 [[NCGlobalPoint alloc] initWithLatitude:135.0 longitude:145.0],
772 [[NCGlobalPoint alloc] initWithLatitude:140.0 longitude:150.0],
773 [[NCGlobalPoint alloc] initWithLatitude:145.0 longitude:155.0],
774 [[NCGlobalPoint alloc] initWithLatitude:150.0 longitude:160.0],
775 ]] locationId:1 sublocationId:0]],
776 ];
777
778 for (NCPolylineMapObject *line in polylines) {
779 [_locationWindow addPolylineMapObject:line];
780 [_mapObjects addObject:line];
781 NSLog(@"Added polyline with %lu points", (unsigned long)line.polyline.polyline.points.count);
782 }
783
784 // [objc_LocationWindow_removePolylineMapObject]
785 // Remove polyline map object
786 [_locationWindow removePolylineMapObject:polylineObject];
787 [_mapObjects removeObject:polylineObject];
788 NSLog(@"Removed polyline map object");
789 // [objc_LocationWindow_removePolylineMapObject]
790
791 if (polylineObject != nil) {
792 // [objc_PolylineMapObject_setPolyLine]
793 // Set polyline geometry
794 NSArray<NCGlobalPoint *> *polylinePoints = @[
795 [[NCGlobalPoint alloc] initWithLatitude:100.0 longitude:200.0],
796 [[NCGlobalPoint alloc] initWithLatitude:150.0 longitude:250.0],
797 [[NCGlobalPoint alloc] initWithLatitude:200.0 longitude:300.0],
798 [[NCGlobalPoint alloc] initWithLatitude:250.0 longitude:350.0],
799 ];
800 NCLocationPolyline *polyline = [[NCLocationPolyline alloc] initWithPoints:polylinePoints sublocationId:@(0)];
801 BOOL polylineSuccess = [polylineObject setPolyLine:polyline];
802 NSLog(@"Set polyline with %lu points: %@", (unsigned long)polylinePoints.count, polylineSuccess ? @"YES" : @"NO");
803 // [objc_PolylineMapObject_setPolyLine]
804
805 // [objc_PolylineMapObject_setDrawnFraction]
807 // [objc_PolylineMapObject_setDrawnFraction]
808
809 // [objc_PolylineMapObject_setDrawnFractionAnimated]
810 BOOL grew = [polylineObject setDrawnFractionAnimated:1 duration:1.0 animationType:AnimationTypeLinear];
811 NSLog(@"Polyline grow started: %@", grew ? @"YES" : @"NO");
812 // [objc_PolylineMapObject_setDrawnFractionAnimated]
813
814 // [objc_PolylineMapObject_drawnFraction]
815 NSLog(@"Drawn fraction: %f", [polylineObject drawnFraction]);
816 // [objc_PolylineMapObject_drawnFraction]
817
818 // [objc_PolylineMapObject_setWidth]
819 // Set polyline width
820 BOOL widthSuccess = [polylineObject setWidth:3.0];
821 NSLog(@"Set polyline width to 3.0 pixels: %@", widthSuccess ? @"YES" : @"NO");
822 // [objc_PolylineMapObject_setWidth]
823
824 // [objc_PolylineMapObject_setColor]
825 // Set polyline color
826 BOOL polylineColorSuccess = [polylineObject setColor:[UIColor colorWithRed:0.0 green:1.0 blue:0.0 alpha:0.8]];
827 NSLog(@"Set polyline color to green with 80%% opacity: %@", polylineColorSuccess ? @"YES" : @"NO");
828 // [objc_PolylineMapObject_setColor]
829
830 // [objc_PolylineMapObject_setDashLength]
831 // Set dash segment length
832 BOOL dashSuccess = [polylineObject setDashLength:3.0];
833 NSLog(@"Set polyline dash length: %@", dashSuccess ? @"YES" : @"NO");
834 // [objc_PolylineMapObject_setDashLength]
835
836 // [objc_PolylineMapObject_dashLength]
837 // Get dash segment length
838 float dashLength = [polylineObject dashLength];
839 NSLog(@"Polyline dash length: %.1f", dashLength);
840 // [objc_PolylineMapObject_dashLength]
841
842 // [objc_PolylineMapObject_setGapLength]
843 // Set gap length between dashes
844 BOOL gapSuccess = [polylineObject setGapLength:1.0];
845 NSLog(@"Set polyline gap length: %@", gapSuccess ? @"YES" : @"NO");
846 // [objc_PolylineMapObject_setGapLength]
847
848 // [objc_PolylineMapObject_gapLength]
849 // Get gap length between dashes
850 float gapLength = [polylineObject gapLength];
851 NSLog(@"Polyline gap length: %.1f", gapLength);
852 // [objc_PolylineMapObject_gapLength]
853
854 // [objc_PolylineMapObject_setOrder]
855 // Set polyline rendering order
856 BOOL polylineOrderSuccess = [polylineObject setOrder:1];
857 NSLog(@"Set polyline rendering order to 1: %@", polylineOrderSuccess ? @"YES" : @"NO");
858 // [objc_PolylineMapObject_setOrder]
859
860 // [objc_PolylineMapObject_setCapType]
861 // Set polyline cap type
862 BOOL capTypeSuccess = [polylineObject setCapType:NCCapTypeRound];
863 NSLog(@"Set polyline cap type to ROUND: %@", capTypeSuccess ? @"YES" : @"NO");
864 // [objc_PolylineMapObject_setCapType]
865
866 // [objc_PolylineMapObject_setJoinType]
867 // Set polyline join type
868 BOOL joinTypeSuccess = [polylineObject setJoinType:NCJoinTypeRound];
869 NSLog(@"Set polyline join type to ROUND: %@", joinTypeSuccess ? @"YES" : @"NO");
870 // [objc_PolylineMapObject_setJoinType]
871
872 // [objc_PolylineMapObject_setMiterLimit]
873 // Set polyline miter limit
874 BOOL miterLimitSuccess = [polylineObject setMiterLimit:2.0];
875 NSLog(@"Set polyline miter limit to 2.0: %@", miterLimitSuccess ? @"YES" : @"NO");
876 // [objc_PolylineMapObject_setMiterLimit]
877
878 // [objc_PolylineMapObject_setOutlineWidth]
879 // Set polyline outline width
880 BOOL outlineWidthSuccess = [polylineObject setOutlineWidth:1.0];
881 NSLog(@"Set polyline outline width to 1.0 pixels: %@", outlineWidthSuccess ? @"YES" : @"NO");
882 // [objc_PolylineMapObject_setOutlineWidth]
883
884 // [objc_PolylineMapObject_setOutlineColor]
885 // Set polyline outline color
886 BOOL outlineColorSuccess = [polylineObject setOutlineColor:[UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:1.0]];
887 NSLog(@"Set polyline outline color to black: %@", outlineColorSuccess ? @"YES" : @"NO");
888 // [objc_PolylineMapObject_setOutlineColor]
889
890 // [objc_PolylineMapObject_setOutlineAlpha]
891 // Set polyline outline alpha
892 BOOL outlineAlphaSuccess = [polylineObject setOutlineAlpha:0.5];
893 NSLog(@"Set polyline outline alpha to 0.5: %@", outlineAlphaSuccess ? @"YES" : @"NO");
894 // [objc_PolylineMapObject_setOutlineAlpha]
895
896 // [objc_PolylineMapObject_setOutlineOrder]
897 // Set polyline outline rendering order
898 BOOL outlineOrderSuccess = [polylineObject setOutlineOrder:0];
899 NSLog(@"Set polyline outline rendering order to 0: %@", outlineOrderSuccess ? @"YES" : @"NO");
900 // [objc_PolylineMapObject_setOutlineOrder]
901
902 // [objc_PolylineMapObject_setOutlineCapType]
903 // Set polyline outline cap type
904 BOOL outlineCapTypeSuccess = [polylineObject setOutlineCapType:NCCapTypeSquare];
905 NSLog(@"Set polyline outline cap type to SQUARE: %@", outlineCapTypeSuccess ? @"YES" : @"NO");
906 // [objc_PolylineMapObject_setOutlineCapType]
907
908 // [objc_PolylineMapObject_setOutlineJoinType]
909 // Set polyline outline join type
910 BOOL outlineJoinTypeSuccess = [polylineObject setOutlineJoinType:NCJoinTypeMiter];
911 NSLog(@"Set polyline outline join type to MITER: %@", outlineJoinTypeSuccess ? @"YES" : @"NO");
912 // [objc_PolylineMapObject_setOutlineJoinType]
913
914 // [objc_PolylineMapObject_setOutlineMiterLimit]
915 // Set polyline outline miter limit
916 BOOL outlineMiterLimitSuccess = [polylineObject setOutlineMiterLimit:3.0];
917 NSLog(@"Set polyline outline miter limit to 3.0: %@", outlineMiterLimitSuccess ? @"YES" : @"NO");
918 // [objc_PolylineMapObject_setOutlineMiterLimit]
919
920 // [objc_PolylineMapObject_setVisible]
921 // Set polyline visibility
922 BOOL visibleSuccess = [polylineObject setVisible:YES];
923 NSLog(@"Set polyline visibility to true: %@", visibleSuccess ? @"YES" : @"NO");
924 // [objc_PolylineMapObject_setVisible]
925
926 // [objc_PolylineMapObject_getMapObjectType]
927 // Get map object type
928 NCMapObjectType objectType = polylineObject.mapObjectType;
929 NSLog(@"Polyline map object type: %@", objectType);
930 // [objc_PolylineMapObject_getMapObjectType]
931
932 // [objc_MapObject_setAlpha_3]
933 // Set alpha transparency
934 BOOL alphaSuccess = [polylineObject setAlpha:0.7];
935 NSLog(@"Set polyline alpha to 0.7: %@", alphaSuccess ? @"YES" : @"NO");
936 // [objc_MapObject_setAlpha_3]
937
938 // [objc_MapObject_setInteractive_3]
939 // Set interactive mode
940 BOOL interactiveSuccess = [polylineObject setInteractive:YES];
941 NSLog(@"Set polyline interactive to true: %@", interactiveSuccess ? @"YES" : @"NO");
942 // [objc_MapObject_setInteractive_3]
943
944 // [objc_MapObject_setTitle_3]
945 // Set title
946 BOOL titleSuccess = [polylineObject setTitle:@"Polyline Object"];
947 NSLog(@"Set polyline title to 'Polyline Object': %@", titleSuccess ? @"YES" : @"NO");
948 // [objc_MapObject_setTitle_3]
949
950 // [objc_MapObject_setData_3]
951 // Set custom data
952 NSDictionary *customData = @{@"key": @"value", @"number": @"42"};
953 BOOL dataSuccess = [polylineObject setData:customData];
954 NSLog(@"Set polyline custom data: %@", dataSuccess ? @"YES" : @"NO");
955 // [objc_MapObject_setData_3]
956
957 // [objc_MapObject_getId_3]
958 // Get object ID
959 NSInteger objectId = polylineObject.id;
960 NSLog(@"Polyline object ID: %ld", (long)objectId);
961 // [objc_MapObject_getId_3]
962
963 // [objc_MapObject_getType_3]
964 // Get object type
965 NSString *objectTypeString = polylineObject.type;
966 NSLog(@"Polyline object type: %@", objectTypeString);
967 // [objc_MapObject_getType_3]
968
969 // [objc_MapObject_getData_3]
970 // Get custom data
971 NSDictionary *retrievedData = polylineObject.data;
972 NSLog(@"Polyline custom data: %@", retrievedData);
973 // [objc_MapObject_getData_3]
974 }
975}
976
981 NSLog(@"--- Dotted Polyline Map Objects ---");
982
983 if (_locationWindow == nil) {
984 NSLog(@"LocationWindow not available yet");
985 return;
986 }
987
988 // [objc_DottedPolylineMapObject_constructor]
989 // Create dotted polyline map object
990 NSArray<NCGlobalPoint *> *points = @[
991 [[NCGlobalPoint alloc] initWithLatitude:160.0 longitude:170.0],
992 [[NCGlobalPoint alloc] initWithLatitude:165.0 longitude:175.0],
993 [[NCGlobalPoint alloc] initWithLatitude:170.0 longitude:180.0],
994 [[NCGlobalPoint alloc] initWithLatitude:175.0 longitude:185.0],
995 ];
996 NCLocationPolyline *polyline = [[NCLocationPolyline alloc] initWithPoints:points sublocationId:@(0)];
997 NCDottedPolylineMapObject *dottedPolylineObject = [[NCDottedPolylineMapObject alloc] initWithPolyline:polyline];
998 NSLog(@"Created dotted polyline map object with %lu points", (unsigned long)points.count);
999 // [objc_DottedPolylineMapObject_constructor]
1000
1001 // [objc_DottedPolylineMapObject_getPolyline]
1002 // Access dotted polyline
1003 NCLocationPolyline *dottedPolylineShape = dottedPolylineObject.polyline;
1004 NSLog(@"Dotted polyline has %lu points", (unsigned long)dottedPolylineShape.polyline.points.count);
1005 // [objc_DottedPolylineMapObject_getPolyline]
1006
1007 // [objc_DottedPolylineMapObject_setPolyline]
1008 // Set dotted polyline geometry
1009 NSArray<NCGlobalPoint *> *dottedPoints = @[
1010 [[NCGlobalPoint alloc] initWithLatitude:160.0 longitude:170.0],
1011 [[NCGlobalPoint alloc] initWithLatitude:165.0 longitude:175.0],
1012 [[NCGlobalPoint alloc] initWithLatitude:170.0 longitude:180.0],
1013 [[NCGlobalPoint alloc] initWithLatitude:175.0 longitude:185.0],
1014 ];
1015 NCLocationPolyline *dottedPolyline = [[NCLocationPolyline alloc] initWithPoints:dottedPoints sublocationId:@(0)];
1016 BOOL dottedSuccess = [dottedPolylineObject setPolyline:dottedPolyline];
1017 NSLog(@"Set dotted polyline with %lu points: %@", (unsigned long)dottedPoints.count, dottedSuccess ? @"YES" : @"NO");
1018 // [objc_DottedPolylineMapObject_setPolyline]
1019
1020 // [objc_DottedPolylineMapObject_setColor]
1021 // Set dotted polyline color
1022 BOOL colorSuccess = [dottedPolylineObject setColor:[UIColor colorWithRed:0.5 green:0.0 blue:1.0 alpha:0.8]];
1023 NSLog(@"Set dotted polyline color to purple with 80%% opacity: %@", colorSuccess ? @"YES" : @"NO");
1024 // [objc_DottedPolylineMapObject_setColor]
1025
1026 // [objc_DottedPolylineMapObject_setWidth]
1027 // Set dotted polyline width
1028 BOOL widthSuccess = [dottedPolylineObject setWidth:3.0];
1029 NSLog(@"Set dotted polyline width to 3.0 pixels: %@", widthSuccess ? @"YES" : @"NO");
1030 // [objc_DottedPolylineMapObject_setWidth]
1031
1032 // [objc_DottedPolylineMapObject_setOrder]
1033 // Set dotted polyline rendering order
1034 BOOL orderSuccess = [dottedPolylineObject setOrder:2];
1035 NSLog(@"Set dotted polyline rendering order to 2: %@", orderSuccess ? @"YES" : @"NO");
1036 // [objc_DottedPolylineMapObject_setOrder]
1037
1038 // [objc_DottedPolylineMapObject_setCollisionEnabled]
1039 // Enable collision detection
1040 BOOL collisionSuccess = [dottedPolylineObject setCollisionEnabled:YES];
1041 NSLog(@"Enabled collision detection for dotted polyline: %@", collisionSuccess ? @"YES" : @"NO");
1042 // [objc_DottedPolylineMapObject_setCollisionEnabled]
1043
1044 // [objc_DottedPolylineMapObject_setPlacement]
1045 // Set placement type
1046 BOOL placementSuccess = [dottedPolylineObject setPlacement:NCCenter];
1047 NSLog(@"Set dotted polyline placement to CENTER: %@", placementSuccess ? @"YES" : @"NO");
1048 // [objc_DottedPolylineMapObject_setPlacement]
1049
1050 // [objc_DottedPolylineMapObject_setPlacementMinRatio]
1051 // Set placement min ratio
1052 BOOL minRatioSuccess = [dottedPolylineObject setPlacementMinRatio:0.5];
1053 NSLog(@"Set dotted polyline placement min ratio to 0.5: %@", minRatioSuccess ? @"YES" : @"NO");
1054 // [objc_DottedPolylineMapObject_setPlacementMinRatio]
1055
1056 // [objc_DottedPolylineMapObject_setPlacementSpacing]
1057 // Set placement spacing
1058 BOOL spacingSuccess = [dottedPolylineObject setPlacementSpacing:10.0];
1059 NSLog(@"Set dotted polyline placement spacing to 10.0: %@", spacingSuccess ? @"YES" : @"NO");
1060 // [objc_DottedPolylineMapObject_setPlacementSpacing]
1061
1062 // [objc_DottedPolylineMapObject_setPriority]
1063 // Set rendering priority
1064 BOOL prioritySuccess = [dottedPolylineObject setPriority:1];
1065 NSLog(@"Set dotted polyline rendering priority to 1: %@", prioritySuccess ? @"YES" : @"NO");
1066 // [objc_DottedPolylineMapObject_setPriority]
1067
1068 // [objc_DottedPolylineMapObject_setRepeatDistance]
1069 // Set repeat distance
1070 BOOL repeatDistanceSuccess = [dottedPolylineObject setRepeatDistance:20.0];
1071 NSLog(@"Set dotted polyline repeat distance to 20.0: %@", repeatDistanceSuccess ? @"YES" : @"NO");
1072 // [objc_DottedPolylineMapObject_setRepeatDistance]
1073
1074 // [objc_DottedPolylineMapObject_setRepeatGroup]
1075 // Set repeat group
1076 BOOL repeatGroupSuccess = [dottedPolylineObject setRepeatGroup:1];
1077 NSLog(@"Set dotted polyline repeat group to 1: %@", repeatGroupSuccess ? @"YES" : @"NO");
1078 // [objc_DottedPolylineMapObject_setRepeatGroup]
1079
1080 // [objc_DottedPolylineMapObject_setSize]
1081 // Set size
1082 NCSize *size = [[NCSize alloc] initWithWidth:16.0 height:16.0];
1083 BOOL sizeSuccess = [dottedPolylineObject setSize:size];
1084 NSLog(@"Set dotted polyline size to (%.1f, %.1f): %@", size.width, size.height, sizeSuccess ? @"YES" : @"NO");
1085 // [objc_DottedPolylineMapObject_setSize]
1086
1087 // [objc_DottedPolylineMapObject_setVisible]
1088 // Set visibility
1089 BOOL visibleSuccess = [dottedPolylineObject setVisible:YES];
1090 NSLog(@"Set dotted polyline visibility to true: %@", visibleSuccess ? @"YES" : @"NO");
1091 // [objc_DottedPolylineMapObject_setVisible]
1092
1093 // [objc_DottedPolylineMapObject_getMapObjectType]
1094 // Get map object type
1095 NCMapObjectType objectType = dottedPolylineObject.mapObjectType;
1096 NSLog(@"Dotted polyline map object type: %@", objectType);
1097 // [objc_DottedPolylineMapObject_getMapObjectType]
1098
1099 // [objc_MapObject_setAlpha_4]
1100 // Set alpha transparency
1101 BOOL alphaSuccess = [dottedPolylineObject setAlpha:0.8];
1102 NSLog(@"Set dotted polyline alpha to 0.8: %@", alphaSuccess ? @"YES" : @"NO");
1103 // [objc_MapObject_setAlpha_4]
1104
1105 // [objc_MapObject_setInteractive_4]
1106 // Set interactive mode
1107 BOOL interactiveSuccess = [dottedPolylineObject setInteractive:YES];
1108 NSLog(@"Set dotted polyline interactive to true: %@", interactiveSuccess ? @"YES" : @"NO");
1109 // [objc_MapObject_setInteractive_4]
1110
1111 // [objc_MapObject_setTitle_4]
1112 // Set title
1113 BOOL titleSuccess = [dottedPolylineObject setTitle:@"Dotted Polyline Object"];
1114 NSLog(@"Set dotted polyline title to 'Dotted Polyline Object': %@", titleSuccess ? @"YES" : @"NO");
1115 // [objc_MapObject_setTitle_4]
1116
1117 // [objc_MapObject_setData_4]
1118 // Set custom data
1119 NSDictionary *customData = @{@"key": @"value", @"number": @"42"};
1120 BOOL dataSuccess = [dottedPolylineObject setData:customData];
1121 NSLog(@"Set dotted polyline custom data: %@", dataSuccess ? @"YES" : @"NO");
1122 // [objc_MapObject_setData_4]
1123
1124 // [objc_MapObject_getId_4]
1125 // Get object ID
1126 NSInteger objectId = dottedPolylineObject.id;
1127 NSLog(@"Dotted polyline object ID: %ld", (long)objectId);
1128 // [objc_MapObject_getId_4]
1129
1130 // [objc_MapObject_getType_4]
1131 // Get object type
1132 NSString *objectTypeString = dottedPolylineObject.type;
1133 NSLog(@"Dotted polyline object type: %@", objectTypeString);
1134 // [objc_MapObject_getType_4]
1135
1136 // [objc_MapObject_getData_4]
1137 // Get custom data
1138 NSDictionary *retrievedData = dottedPolylineObject.data;
1139 NSLog(@"Dotted polyline custom data: %@", retrievedData);
1140 // [objc_MapObject_getData_4]
1141
1142 // [objc_LocationWindow_addDottedPolylineMapObject]
1143 // Add dotted polyline map object
1144 [_locationWindow addDottedPolylineMapObject:dottedPolylineObject];
1145 [_mapObjects addObject:dottedPolylineObject];
1146 NSLog(@"Added dotted polyline map object");
1147 // [objc_LocationWindow_addDottedPolylineMapObject]
1148
1149 // Test multiple dotted polyline objects
1150 NSArray *dottedPolylines = @[
1151 [[NCDottedPolylineMapObject alloc] initWithPolyline:[[NCLocationPolyline alloc] initWithPolyline:[[NCPolyline alloc] initWithPoints:@[
1152 [[NCGlobalPoint alloc] initWithLatitude:180.0 longitude:190.0],
1153 [[NCGlobalPoint alloc] initWithLatitude:185.0 longitude:195.0],
1154 [[NCGlobalPoint alloc] initWithLatitude:190.0 longitude:200.0],
1155 ]] locationId:1 sublocationId:0]],
1156 [[NCDottedPolylineMapObject alloc] initWithPolyline:[[NCLocationPolyline alloc] initWithPolyline:[[NCPolyline alloc] initWithPoints:@[
1157 [[NCGlobalPoint alloc] initWithLatitude:195.0 longitude:205.0],
1158 [[NCGlobalPoint alloc] initWithLatitude:200.0 longitude:210.0],
1159 [[NCGlobalPoint alloc] initWithLatitude:205.0 longitude:215.0],
1160 [[NCGlobalPoint alloc] initWithLatitude:210.0 longitude:220.0],
1161 ]] locationId:1 sublocationId:0]],
1162 ];
1163
1164 for (NCDottedPolylineMapObject *dottedLine in dottedPolylines) {
1165 [_locationWindow addDottedPolylineMapObject:dottedLine];
1166 [_mapObjects addObject:dottedLine];
1167 NSLog(@"Added dotted polyline with %lu points", (unsigned long)dottedLine.polyline.polyline.points.count);
1168 }
1169
1170 // [objc_LocationWindow_removeDottedPolylineMapObject]
1171 // Remove dotted polyline map object
1172 [_locationWindow removeDottedPolylineMapObject:dottedPolylineObject];
1173 [_mapObjects removeObject:dottedPolylineObject];
1174 NSLog(@"Removed dotted polyline map object");
1175 // [objc_LocationWindow_removeDottedPolylineMapObject]
1176}
1177
1182 NSLog(@"--- Cluster map objects ---");
1183
1184 if (_locationWindow == nil) {
1185 NSLog(@"LocationWindow not available");
1186 return;
1187 }
1188
1189 // [objc_LocationWindow_addClusterMapObjectController]
1190 NCClusterMapObjectController *controller =
1192 NSLog(@"Added cluster map object controller");
1193 // [objc_LocationWindow_addClusterMapObjectController]
1194
1195 if (controller == nil) {
1196 return;
1197 }
1198
1201 [clusterIcon1 setPosition:[[NCGlobalPoint alloc] initWithLatitude:100.0 longitude:100.0]];
1202 [clusterIcon2 setPosition:[[NCGlobalPoint alloc] initWithLatitude:105.0 longitude:102.0]];
1203
1204 // [objc_ClusterMapObjectController_addIconMapObject]
1205 BOOL added1 = [controller addIconMapObject:clusterIcon1];
1206 BOOL added2 = [controller addIconMapObject:clusterIcon2];
1207 NSLog(@"Registered icons for clustering: %d, %d", added1, added2);
1208 // [objc_ClusterMapObjectController_addIconMapObject]
1209
1210 // [objc_ClusterMapObjectController_setEnabled]
1211 [controller setEnabled:YES];
1212 NSLog(@"Clustering enabled");
1213 // [objc_ClusterMapObjectController_setEnabled]
1214
1215 // [objc_ClusterMapObjectController_isEnabled]
1216 BOOL clusteringEnabled = [controller isEnabled];
1217 NSLog(@"Clustering is enabled: %d", clusteringEnabled);
1218 // [objc_ClusterMapObjectController_isEnabled]
1219
1220 // [objc_ClusterMapObjectController_setRadius]
1221 [controller setRadius:40.0f];
1222 NSLog(@"Set cluster radius to 40 px");
1223 // [objc_ClusterMapObjectController_setRadius]
1224
1225 // [objc_ClusterMapObjectController_getRadius]
1226 float clusterRadius = [controller getRadius];
1227 NSLog(@"Cluster radius: %f", clusterRadius);
1228 // [objc_ClusterMapObjectController_getRadius]
1229
1230 // [objc_ClusterMapObjectController_setInteractive]
1231 BOOL interactiveSuccess = [controller setInteractive:YES];
1232 NSLog(@"Set cluster markers interactive: %d", interactiveSuccess);
1233 // [objc_ClusterMapObjectController_setInteractive]
1234
1235 // [objc_ClusterMapObjectController_setClusterSize]
1236 BOOL sizeSuccess = [controller setClusterSizeWithWidth:32.0f height:32.0f];
1237 NSLog(@"Set default cluster icon size: %d", sizeSuccess);
1238 // [objc_ClusterMapObjectController_setClusterSize]
1239
1240 DemoClusterMapObjectControllerListener *listener =
1242
1243 // [objc_ClusterMapObjectController_addListener]
1244 [controller addListener:listener];
1245 NSLog(@"Added cluster map object controller listener");
1246 // [objc_ClusterMapObjectController_addListener]
1247
1248 // [objc_ClusterMapObjectController_getClusters]
1249 NSArray<NCClusterMapObject *> *clusters = [controller getClusters];
1250 NSLog(@"Visible clusters: %lu", (unsigned long)clusters.count);
1251 // [objc_ClusterMapObjectController_getClusters]
1252
1253 if (clusters.count > 0) {
1254 NCClusterMapObject *cluster = clusters.firstObject;
1255 // [objc_ClusterMapObject_setBitmap]
1256 UIImage *clusterImage = [UIImage imageWithContentsOfFile:@"/path/to/cluster.png"];
1257 BOOL bitmapSuccess = [cluster setBitmap:clusterImage];
1258 NSLog(@"Set cluster bitmap (UIImage): %d", bitmapSuccess);
1259 // [objc_ClusterMapObject_setBitmap]
1260 }
1261
1262 // [objc_ClusterMapObjectController_removeListener]
1263 [controller removeListener:listener];
1264 NSLog(@"Removed cluster map object controller listener");
1265 // [objc_ClusterMapObjectController_removeListener]
1266
1267 // [objc_ClusterMapObjectController_removeIconMapObject]
1268 BOOL removed = [controller removeIconMapObject:clusterIcon1];
1269 NSLog(@"Removed icon from cluster controller: %d", removed);
1270 // [objc_ClusterMapObjectController_removeIconMapObject]
1271 [_locationWindow removeIconMapObject:clusterIcon1];
1272 [_locationWindow removeIconMapObject:clusterIcon2];
1273
1274 // [objc_ClusterMapObjectController_clear]
1275 [controller clear];
1276 NSLog(@"Cleared cluster controller");
1277 // [objc_ClusterMapObjectController_clear]
1278
1279 // [objc_LocationWindow_removeClusterMapObjectController]
1280 BOOL controllerRemoved =
1281 [_locationWindow removeClusterMapObjectController:controller];
1282 NSLog(@"Removed cluster map object controller: %d", controllerRemoved);
1283 // [objc_LocationWindow_removeClusterMapObjectController]
1284}
1285
1290 NSLog(@"--- Remove All Map Objects ---");
1291
1292 if (_locationWindow == nil) {
1293 NSLog(@"LocationWindow not available yet");
1294 return;
1295 }
1296
1297 NSLog(@"Current map objects count: %lu", (unsigned long)_mapObjects.count);
1298
1299 // [objc_LocationWindow_removeAllMapObjects]
1300 // Remove all map objects
1302 [_mapObjects removeAllObjects];
1303 NSLog(@"Removed all map objects");
1304 // [objc_LocationWindow_removeAllMapObjects]
1305
1306 NSLog(@"Map objects count after removal: %lu", (unsigned long)_mapObjects.count);
1307}
1308
1312- (void)cleanup {
1313 NSLog(@"--- Cleanup ---");
1314
1315 if (_locationWindow != nil) {
1317 NSLog(@"Cleaned up all map objects");
1318 }
1319
1320 [_mapObjects removeAllObjects];
1321 NSLog(@"Cleared map objects list");
1322}
1323
1324@end
1325
1326@interface DemoClusterMapObjectControllerListener : NSObject <NCClusterMapObjectControllerListener>
1327@end
1328
1329@implementation DemoClusterMapObjectControllerListener {
1330 DemoClusterMapObjectListener *_clusterChangeListener;
1332}
1333
1334- (instancetype)init {
1335 self = [super init];
1336 if (self) {
1337 _clusterChangeListener = [[DemoClusterMapObjectListener alloc] init];
1338 }
1339 return self;
1340}
1341
1342// [objc_ClusterMapObjectControllerListener_onClusterCreated]
1343- (void)onClusterCreated:(NCClusterMapObjectController *)controller
1344 cluster:(NCClusterMapObject *)cluster {
1345 // [objc_ClusterMapObject_addListener]
1346 [cluster addListener:_clusterChangeListener];
1347 NSLog(@"Added cluster change listener, initial count: %d", [cluster getCount]);
1348 // [objc_ClusterMapObject_addListener]
1349 _activeCluster = cluster;
1350}
1351// [objc_ClusterMapObjectControllerListener_onClusterCreated]
1352
1353// [objc_ClusterMapObjectControllerListener_onClusterDestroyed]
1354- (void)onClusterDestroyed:(NCClusterMapObjectController *)controller
1355 clusterId:(int32_t)clusterId {
1356 if (_activeCluster != nil && [_activeCluster getId] == clusterId) {
1357 // [objc_ClusterMapObject_removeListener]
1358 [_activeCluster removeListener:_clusterChangeListener];
1359 NSLog(@"Removed cluster change listener");
1360 // [objc_ClusterMapObject_removeListener]
1361 _activeCluster = nil;
1362 }
1363 NSLog(@"Cluster destroyed, id: %d", clusterId);
1364}
1365// [objc_ClusterMapObjectControllerListener_onClusterDestroyed]
1366
1367@end
1368
1369@interface DemoClusterMapObjectListener : NSObject <NCClusterMapObjectListener>
1370@end
1371
1372@implementation DemoClusterMapObjectListener
1373
1374// [objc_ClusterMapObjectListener_onClusterChanged]
1375- (void)onClusterChanged:(NCClusterMapObject *)cluster {
1376 int32_t memberCount = [cluster getCount];
1377 NSLog(@"Cluster changed, member count: %d", memberCount);
1378}
1379// [objc_ClusterMapObjectListener_onClusterChanged]
1380
1381@end
1382
1383// Main function to run the example
1384int main(int argc, const char * argv[]) {
1385 @autoreleasepool {
1387 }
1388 return 0;
1389}