1 #include <Elementary.h>
3 # include "elementary_config.h"
5 #ifndef ELM_LIB_QUICKLAUNCH
7 typedef struct Marker_Data
13 static Elm_Map_Marker_Class *itc1, *itc2, *itc_parking;
14 static Elm_Map_Group_Class *itc_group1, *itc_group2, *itc_group_parking;
16 static Evas_Object *rect;
19 Marker_Data data1 = {PACKAGE_DATA_DIR"/images/logo.png"};
20 Marker_Data data2 = {PACKAGE_DATA_DIR"/images/logo_small.png"};
21 Marker_Data data3 = {PACKAGE_DATA_DIR"/images/panel_01.jpg"};
22 Marker_Data data4 = {PACKAGE_DATA_DIR"/images/plant_01.jpg"};
23 Marker_Data data5 = {PACKAGE_DATA_DIR"/images/rock_01.jpg"};
24 Marker_Data data6 = {PACKAGE_DATA_DIR"/images/rock_02.jpg"};
25 Marker_Data data7 = {PACKAGE_DATA_DIR"/images/sky_01.jpg"};
26 Marker_Data data8 = {PACKAGE_DATA_DIR"/images/sky_02.jpg"};
27 Marker_Data data9 = {PACKAGE_DATA_DIR"/images/sky_03.jpg"};
28 Marker_Data data10 = {PACKAGE_DATA_DIR"/images/sky_03.jpg"};
29 Marker_Data data11= {PACKAGE_DATA_DIR"/images/wood_01.jpg"};
31 Marker_Data data_parking= {PACKAGE_DATA_DIR"/images/parking.png"};
34 my_map_clicked(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
40 my_map_press(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
46 my_map_longpressed(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
48 printf("longpressed\n");
52 my_map_clicked_double(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
54 printf("clicked,double\n");
58 my_map_load(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
64 my_map_loaded(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
70 my_map_load_details(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
72 printf("load,details\n");
76 my_map_loaded_details(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
78 printf("loaded,details\n");
82 my_map_zoom_start(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
84 printf("zoom,start\n");
88 my_map_zoom_stop(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
90 printf("zoom,stop\n");
94 my_map_zoom_change(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
96 printf("zoom,change\n");
100 my_map_anim_start(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
102 printf("anim,start\n");
106 my_map_anim_stop(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
108 printf("anim,stop\n");
112 my_map_drag_start(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
114 printf("drag,start\n");
118 my_map_drag_stop(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
120 printf("drag_stop\n");
124 my_map_scroll(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
127 elm_map_geo_region_get(obj, &lon, &lat);
128 printf("scroll longitude : %f latitude : %f\n", lon, lat);
132 my_bt_show_reg(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
134 Eina_Bool b = elm_map_paused_get(data);
135 elm_map_paused_set(data, EINA_TRUE);
136 elm_map_zoom_mode_set(data, ELM_MAP_ZOOM_MODE_MANUAL);
137 elm_map_geo_region_show(data, 2.352, 48.857);
138 elm_map_zoom_set(data, 18);
139 elm_map_paused_set(data, b);
143 my_bt_bring_reg(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
145 elm_map_geo_region_bring_in(data, 2.352, 48.857);
149 my_bt_zoom_in(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
153 zoom = elm_map_zoom_get(data);
155 elm_map_zoom_mode_set(data, ELM_MAP_ZOOM_MODE_MANUAL);
156 if (zoom >= (1.0 / 32.0)) elm_map_zoom_set(data, zoom);
160 my_bt_zoom_out(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
164 zoom = elm_map_zoom_get(data);
166 elm_map_zoom_mode_set(data, ELM_MAP_ZOOM_MODE_MANUAL);
167 if (zoom <= 256.0) elm_map_zoom_set(data, zoom);
171 my_bt_pause(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
173 elm_map_paused_set(data, !elm_map_paused_get(data));
177 my_bt_markers_pause(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
179 elm_map_paused_markers_set(data, !elm_map_paused_markers_get(data));
183 my_bt_zoom_fit(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
185 elm_map_zoom_mode_set(data, ELM_MAP_ZOOM_MODE_AUTO_FIT);
189 my_bt_zoom_fill(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
191 elm_map_zoom_mode_set(data, ELM_MAP_ZOOM_MODE_AUTO_FILL);
195 my_bt_source_mapnik(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
197 elm_map_source_set(data, ELM_MAP_SOURCE_MAPNIK);
201 my_bt_source_osmarender(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
203 elm_map_source_set(data, ELM_MAP_SOURCE_OSMARENDER);
207 my_bt_source_cyclemap(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
209 elm_map_source_set(data, ELM_MAP_SOURCE_CYCLEMAP);
213 my_bt_source_maplint(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
215 elm_map_source_set(data, ELM_MAP_SOURCE_MAPLINT);
219 my_bt_source_module(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
221 elm_map_source_set(data, ELM_MAP_SOURCE_MODULE);
225 my_bt_add(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
228 Elm_Map_Group_Class *g_clas;
229 Elm_Map_Marker_Class *m_clas;
230 Marker_Data *d = &data7;
232 for(i =0; i<1000; i++)
236 int r1 = rand() % (180*2*100);
237 if(r1<=180) r1 = -r1;
238 else r1 = r1 - 180*100;
240 int r2 = rand() % (85*2*100);
242 else r2 = r2 - 85*100;
244 int style = rand() % 3;
251 m_clas = itc_parking;
261 elm_map_marker_add(data, r1/100., r2/100., m_clas, g_clas, d);
264 printf("nb elements: %d\n", nb_elts);
268 _marker_get(Evas_Object *obj, Elm_Map_Marker *marker __UNUSED__, void *data)
270 Marker_Data *d = data;
272 Evas_Object *bx = elm_box_add(obj);
273 evas_object_show(bx);
277 Evas_Object *icon = elm_icon_add(obj);
278 elm_icon_file_set(icon, d->file, NULL);
279 evas_object_show(icon);
281 Evas_Object *o = elm_button_add(obj);
282 elm_button_icon_set(o, icon);
284 elm_box_pack_end(bx, o);
288 Evas_Object *o = evas_object_image_add(evas_object_evas_get(obj));
289 evas_object_image_file_set(o, d->file, NULL);
290 evas_object_image_filled_set(o, EINA_TRUE);
291 evas_object_size_hint_min_set(o, 64, 64);
293 elm_box_pack_end(bx, o);
295 Evas_Object *lbl = elm_label_add(obj);
296 elm_label_label_set(lbl, "Wolves Go !");
297 evas_object_show(lbl);
298 elm_box_pack_end(bx, lbl);
305 _icon_get(Evas_Object *obj, Elm_Map_Marker *marker __UNUSED__, void *data)
307 Marker_Data *d = data;
309 Evas_Object *icon = elm_icon_add(obj);
310 elm_icon_file_set(icon, d->file, NULL);
311 evas_object_show(icon);
317 _group_icon_get(Evas_Object *obj, void *data)
321 Evas_Object *icon = elm_icon_add(obj);
322 elm_icon_file_set(icon, file, NULL);
323 evas_object_show(icon);
329 _map_mouse_wheel_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
331 Evas_Object *map = data;
332 Evas_Event_Mouse_Wheel *ev = (Evas_Event_Mouse_Wheel*) event_info;
334 //unset the mouse wheel
335 ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
337 zoom = elm_map_zoom_get(map);
344 elm_map_zoom_mode_set(map, ELM_MAP_ZOOM_MODE_MANUAL);
345 if ((zoom >= 0) && (zoom <= 18)) elm_map_zoom_set(map, zoom);
349 _map_move_resize_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
353 evas_object_geometry_get(data,&x,&y,&w,&h);
354 evas_object_resize(rect,w,h);
355 evas_object_move(rect,x,y);
359 test_map(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
361 Evas_Object *win, *bg, *map, *tb2, *bt, *bx;
363 win = elm_win_add(NULL, "map", ELM_WIN_BASIC);
364 elm_win_title_set(win, "Map");
365 elm_win_autodel_set(win, 1);
367 bg = elm_bg_add(win);
368 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
369 elm_win_resize_object_add(win, bg);
370 evas_object_show(bg);
372 map = elm_map_add(win);
377 evas_object_size_hint_weight_set(map, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
378 elm_win_resize_object_add(win, map);
379 evas_object_data_set(map, "window", win);
382 itc1 = elm_map_marker_class_new(map);
383 elm_map_marker_class_get_cb_set(itc1, _marker_get);
384 elm_map_marker_class_del_cb_set(itc1, NULL);
386 itc2 = elm_map_marker_class_new(map);
387 elm_map_marker_class_get_cb_set(itc2, _marker_get);
388 elm_map_marker_class_del_cb_set(itc2, NULL);
389 elm_map_marker_class_style_set(itc2, "radio2");
391 itc_parking = elm_map_marker_class_new(map);
392 elm_map_marker_class_get_cb_set(itc_parking, _marker_get);
393 elm_map_marker_class_del_cb_set(itc_parking, NULL);
394 elm_map_marker_class_icon_cb_set(itc_parking, _icon_get);
395 elm_map_marker_class_style_set(itc_parking, "empty");
399 itc_group1 = elm_map_group_class_new(map);
400 elm_map_group_class_data_set(itc_group1, (void *)PACKAGE_DATA_DIR"/images/plant_01.jpg");
402 itc_group2 = elm_map_group_class_new(map);
403 elm_map_group_class_style_set(itc_group2, "radio2");
404 elm_map_group_class_zoom_displayed_set(itc_group1, 3);
406 itc_group_parking = elm_map_group_class_new(map);
407 elm_map_group_class_icon_cb_set(itc_group_parking, _group_icon_get);
408 elm_map_group_class_data_set(itc_group_parking, (void *)PACKAGE_DATA_DIR"/images/parking.png");
409 elm_map_group_class_style_set(itc_group_parking, "empty");
410 elm_map_group_class_zoom_displayed_set(itc_group_parking, 5);
414 rect = evas_object_rectangle_add(evas_object_evas_get(win));
415 evas_object_color_set(rect, 0, 0, 0, 0);
416 evas_object_repeat_events_set(rect,1);
417 evas_object_show(rect);
418 evas_object_event_callback_add(rect, EVAS_CALLBACK_MOUSE_WHEEL,
419 _map_mouse_wheel_cb, map);
420 evas_object_raise(rect);
422 evas_object_event_callback_add(map, EVAS_CALLBACK_RESIZE,
423 _map_move_resize_cb, map);
424 evas_object_event_callback_add(map, EVAS_CALLBACK_MOVE,
425 _map_move_resize_cb, map);
427 elm_map_marker_add(map, 2.352, 48.857, itc1, itc_group1, &data1);
428 elm_map_marker_add(map, 2.355, 48.857, itc1, itc_group1, &data3);
429 elm_map_marker_add(map, 3, 48.857, itc2, itc_group1, &data2);
430 elm_map_marker_add(map, 2.352, 49, itc2, itc_group1, &data1);
432 elm_map_marker_add(map, 7.31451, 48.857127, itc1, itc_group1, &data10);
433 elm_map_marker_add(map, 7.314704, 48.857119, itc1, itc_group1, &data4);
434 elm_map_marker_add(map, 7.314704, 48.857119, itc2, itc_group1, &data5);
435 elm_map_marker_add(map, 7.31432, 48.856785, itc2, itc_group1, &data6);
436 elm_map_marker_add(map, 7.3148, 48.85725, itc1, itc_group2, &data7);
437 elm_map_marker_add(map, 7.316445, 48.8572210000694, itc1, itc_group1, &data8);
438 elm_map_marker_add(map, 7.316527000125, 48.85609, itc2, itc_group2, &data9);
439 elm_map_marker_add(map, 7.3165409990833, 48.856078, itc2, itc_group1, &data11);
440 elm_map_marker_add(map, 7.319812, 48.856561, itc2, itc_group2, &data10);
444 evas_object_smart_callback_add(map, "clicked", my_map_clicked, win);
445 evas_object_smart_callback_add(map, "press", my_map_press, win);
446 evas_object_smart_callback_add(map, "longpressed", my_map_longpressed, win);
447 evas_object_smart_callback_add(map, "clicked,double", my_map_clicked_double, win);
448 evas_object_smart_callback_add(map, "load", my_map_load, win);
449 evas_object_smart_callback_add(map, "loaded", my_map_loaded, win);
450 evas_object_smart_callback_add(map, "load,details", my_map_load_details, win);
451 evas_object_smart_callback_add(map, "loaded,details", my_map_loaded_details, win);
452 evas_object_smart_callback_add(map, "zoom,start", my_map_zoom_start, win);
453 evas_object_smart_callback_add(map, "zoom,stop", my_map_zoom_stop, win);
454 evas_object_smart_callback_add(map, "zoom,change", my_map_zoom_change, win);
455 evas_object_smart_callback_add(map, "scroll,anim,start", my_map_anim_start, win);
456 evas_object_smart_callback_add(map, "scroll,anim,stop", my_map_anim_stop, win);
457 evas_object_smart_callback_add(map, "scroll,drag,start", my_map_drag_start, win);
458 evas_object_smart_callback_add(map, "scroll,drag,stop", my_map_drag_stop, win);
459 evas_object_smart_callback_add(map, "scroll", my_map_scroll, win);
461 evas_object_show(map);
463 tb2 = elm_table_add(win);
464 evas_object_size_hint_weight_set(tb2, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
465 elm_win_resize_object_add(win, tb2);
467 bt = elm_button_add(win);
468 elm_button_label_set(bt, "Z -");
469 evas_object_smart_callback_add(bt, "clicked", my_bt_zoom_out, map);
470 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
471 evas_object_size_hint_align_set(bt, 0.1, 0.1);
472 elm_table_pack(tb2, bt, 0, 0, 1, 1);
473 evas_object_show(bt);
475 bt = elm_button_add(win);
476 elm_button_label_set(bt, "Add 1000 markers");
477 evas_object_smart_callback_add(bt, "clicked", my_bt_add, map);
478 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
479 evas_object_size_hint_align_set(bt, 0.5, 0.1);
480 elm_table_pack(tb2, bt, 1, 0, 1, 1);
481 evas_object_show(bt);
483 bt = elm_button_add(win);
484 elm_button_label_set(bt, "Z +");
485 evas_object_smart_callback_add(bt, "clicked", my_bt_zoom_in, map);
486 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
487 evas_object_size_hint_align_set(bt, 0.9, 0.1);
488 elm_table_pack(tb2, bt, 2, 0, 1, 1);
489 evas_object_show(bt);
491 bt = elm_button_add(win);
492 elm_button_label_set(bt, "Show Paris");
493 evas_object_smart_callback_add(bt, "clicked", my_bt_show_reg, map);
494 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
495 evas_object_size_hint_align_set(bt, 0.1, 0.5);
496 elm_table_pack(tb2, bt, 0, 1, 1, 1);
497 evas_object_show(bt);
499 bt = elm_button_add(win);
500 elm_button_label_set(bt, "Bring Paris");
501 evas_object_smart_callback_add(bt, "clicked", my_bt_bring_reg, map);
502 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
503 evas_object_size_hint_align_set(bt, 0.9, 0.5);
504 elm_table_pack(tb2, bt, 2, 1, 1, 1);
505 evas_object_show(bt);
508 bx = elm_box_add(win);
509 evas_object_show(bx);
510 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
511 evas_object_size_hint_align_set(bx, 0.1, 0.9);
512 elm_table_pack(tb2, bx, 0, 2, 1, 1);
514 bt = elm_button_add(win);
515 elm_button_label_set(bt, "Pause On/Off");
516 evas_object_smart_callback_add(bt, "clicked", my_bt_pause, map);
517 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
518 evas_object_size_hint_align_set(bt, 0.1, 0.9);
519 evas_object_show(bt);
520 elm_box_pack_end(bx, bt);
522 bt = elm_button_add(win);
523 elm_button_label_set(bt, "Markers pause On/Off");
524 evas_object_smart_callback_add(bt, "clicked", my_bt_markers_pause, map);
525 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
526 evas_object_size_hint_align_set(bt, 0.1, 0.9);
527 evas_object_show(bt);
528 elm_box_pack_end(bx, bt);
532 bx = elm_box_add(win);
533 evas_object_show(bx);
534 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
535 evas_object_size_hint_align_set(bx, 0.5, 0.9);
536 elm_table_pack(tb2, bx, 1, 2, 1, 1);
538 bt = elm_button_add(win);
539 elm_button_label_set(bt, "Fit");
540 evas_object_smart_callback_add(bt, "clicked", my_bt_zoom_fit, map);
541 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
542 evas_object_size_hint_align_set(bt, 0.5, 0.9);
543 evas_object_show(bt);
544 elm_box_pack_end(bx, bt);
546 bt = elm_button_add(win);
547 elm_button_label_set(bt, "Fill");
548 evas_object_smart_callback_add(bt, "clicked", my_bt_zoom_fill, map);
549 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
550 evas_object_size_hint_align_set(bt, 0.5, 0.9);
551 evas_object_show(bt);
552 elm_box_pack_end(bx, bt);
556 bx = elm_box_add(win);
557 evas_object_show(bx);
558 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
559 evas_object_size_hint_align_set(bx, 1.0, 0.9);
560 elm_table_pack(tb2, bx, 2, 2, 1, 1);
562 bt = elm_button_add(win);
563 elm_button_label_set(bt, "Mapnik");
564 evas_object_smart_callback_add(bt, "clicked", my_bt_source_mapnik, map);
565 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
566 evas_object_size_hint_align_set(bt, 1.0, 0.9);
567 evas_object_show(bt);
568 elm_box_pack_end(bx, bt);
570 bt = elm_button_add(win);
571 elm_button_label_set(bt, "Osmarender");
572 evas_object_smart_callback_add(bt, "clicked", my_bt_source_osmarender, map);
573 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
574 evas_object_size_hint_align_set(bt, 1.0, 0.9);
575 evas_object_show(bt);
576 elm_box_pack_end(bx, bt);
578 bt = elm_button_add(win);
579 elm_button_label_set(bt, "Cycle Map");
580 evas_object_smart_callback_add(bt, "clicked", my_bt_source_cyclemap, map);
581 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
582 evas_object_size_hint_align_set(bt, 1.0, 0.9);
583 evas_object_show(bt);
584 elm_box_pack_end(bx, bt);
586 bt = elm_button_add(win);
587 elm_button_label_set(bt, "Maplint");
588 evas_object_smart_callback_add(bt, "clicked", my_bt_source_maplint, map);
589 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
590 evas_object_size_hint_align_set(bt, 1.0, 0.9);
591 evas_object_show(bt);
592 elm_box_pack_end(bx, bt);
594 bt = elm_button_add(win);
595 elm_button_label_set(bt, "Module");
596 evas_object_smart_callback_add(bt, "clicked", my_bt_source_module, map);
597 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
598 evas_object_size_hint_align_set(bt, 1.0, 0.9);
599 evas_object_show(bt);
600 elm_box_pack_end(bx, bt);
603 evas_object_show(tb2);
606 evas_object_resize(win, 800, 800);
607 evas_object_show(win);