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