1 #include <Elementary.h>
2 #ifndef ELM_LIB_QUICKLAUNCH
4 typedef struct Marker_Data
10 static Elm_Map_Marker_Class *itc1, *itc2, *itc_parking;
11 static Elm_Map_Group_Class *itc_group1, *itc_group2, *itc_group_parking;
13 static Evas_Object *rect;
16 Marker_Data data1 = {PACKAGE_DATA_DIR"/images/logo.png"};
17 Marker_Data data2 = {PACKAGE_DATA_DIR"/images/logo_small.png"};
18 Marker_Data data3 = {PACKAGE_DATA_DIR"/images/panel_01.jpg"};
19 Marker_Data data4 = {PACKAGE_DATA_DIR"/images/plant_01.jpg"};
20 Marker_Data data5 = {PACKAGE_DATA_DIR"/images/rock_01.jpg"};
21 Marker_Data data6 = {PACKAGE_DATA_DIR"/images/rock_02.jpg"};
22 Marker_Data data7 = {PACKAGE_DATA_DIR"/images/sky_01.jpg"};
23 Marker_Data data8 = {PACKAGE_DATA_DIR"/images/sky_02.jpg"};
24 Marker_Data data9 = {PACKAGE_DATA_DIR"/images/sky_03.jpg"};
25 Marker_Data data10 = {PACKAGE_DATA_DIR"/images/sky_03.jpg"};
26 Marker_Data data11= {PACKAGE_DATA_DIR"/images/wood_01.jpg"};
28 Marker_Data data_parking= {PACKAGE_DATA_DIR"/images/parking.png"};
31 my_map_clicked(void *data, Evas_Object *obj, void *event_info)
33 //Evas_Object *win = data;
38 my_map_press(void *data, Evas_Object *obj, void *event_info)
40 //Evas_Object *win = data;
45 my_map_longpressed(void *data, Evas_Object *obj, void *event_info)
47 //Evas_Object *win = data;
48 printf("longpressed\n");
52 my_map_clicked_double(void *data, Evas_Object *obj, void *event_info)
54 //Evas_Object *win = data;
55 printf("clicked,double\n");
59 my_map_load(void *data, Evas_Object *obj, void *event_info)
61 //Evas_Object *win = data;
66 my_map_loaded(void *data, Evas_Object *obj, void *event_info)
68 //Evas_Object *win = data;
73 my_map_load_details(void *data, Evas_Object *obj, void *event_info)
75 //Evas_Object *win = data;
76 printf("load,details\n");
80 my_map_loaded_details(void *data, Evas_Object *obj, void *event_info)
82 //Evas_Object *win = data;
83 printf("loaded,details\n");
87 my_map_zoom_start(void *data, Evas_Object *obj, void *event_info)
89 //Evas_Object *win = data;
90 printf("zoom,start\n");
94 my_map_zoom_stop(void *data, Evas_Object *obj, void *event_info)
96 //Evas_Object *win = data;
97 printf("zoom,stop\n");
101 my_map_zoom_change(void *data, Evas_Object *obj, void *event_info)
103 //Evas_Object *win = data;
104 printf("zoom,change\n");
108 my_map_anim_start(void *data, Evas_Object *obj, void *event_info)
110 //Evas_Object *win = data;
111 printf("anim,start\n");
115 my_map_anim_stop(void *data, Evas_Object *obj, void *event_info)
117 //Evas_Object *win = data;
118 printf("anim,stop\n");
122 my_map_drag_start(void *data, Evas_Object *obj, void *event_info)
124 //Evas_Object *win = data;
125 printf("drag,start\n");
129 my_map_drag_stop(void *data, Evas_Object *obj, void *event_info)
131 //Evas_Object *win = data;
132 printf("drag_stop\n");
136 my_map_scroll(void *data, Evas_Object *obj, void *event_info)
138 //Evas_Object *win = data;
140 elm_map_geo_region_get(obj, &lon, &lat);
141 printf("scroll longitude : %f latitude : %f\n", lon, lat);
145 my_bt_show_reg(void *data, Evas_Object *obj, void *event_info)
147 Eina_Bool b = elm_map_paused_get(data);
148 elm_map_paused_set(data, EINA_TRUE);
149 elm_map_zoom_mode_set(data, ELM_MAP_ZOOM_MODE_MANUAL);
150 elm_map_geo_region_show(data, 2.352, 48.857);
151 elm_map_zoom_set(data, 18);
152 elm_map_paused_set(data, b);
156 my_bt_bring_reg(void *data, Evas_Object *obj, void *event_info)
158 elm_map_geo_region_bring_in(data, 2.352, 48.857);
162 my_bt_zoom_in(void *data, Evas_Object *obj, void *event_info)
166 zoom = elm_map_zoom_get(data);
168 elm_map_zoom_mode_set(data, ELM_MAP_ZOOM_MODE_MANUAL);
169 if (zoom >= (1.0 / 32.0)) elm_map_zoom_set(data, zoom);
173 my_bt_zoom_out(void *data, Evas_Object *obj, void *event_info)
177 zoom = elm_map_zoom_get(data);
179 elm_map_zoom_mode_set(data, ELM_MAP_ZOOM_MODE_MANUAL);
180 if (zoom <= 256.0) elm_map_zoom_set(data, zoom);
184 my_bt_pause(void *data, Evas_Object *obj, void *event_info)
186 elm_map_paused_set(data, !elm_map_paused_get(data));
190 my_bt_markers_pause(void *data, Evas_Object *obj, void *event_info)
192 elm_map_paused_markers_set(data, !elm_map_paused_markers_get(data));
196 my_bt_zoom_fit(void *data, Evas_Object *obj, void *event_info)
198 elm_map_zoom_mode_set(data, ELM_MAP_ZOOM_MODE_AUTO_FIT);
202 my_bt_zoom_fill(void *data, Evas_Object *obj, void *event_info)
204 elm_map_zoom_mode_set(data, ELM_MAP_ZOOM_MODE_AUTO_FILL);
208 my_bt_source_mapnik(void *data, Evas_Object *obj, void *event_info)
210 elm_map_source_set(data, ELM_MAP_SOURCE_MAPNIK);
214 my_bt_source_osmarender(void *data, Evas_Object *obj, void *event_info)
216 elm_map_source_set(data, ELM_MAP_SOURCE_OSMARENDER);
220 my_bt_source_cyclemap(void *data, Evas_Object *obj, void *event_info)
222 elm_map_source_set(data, ELM_MAP_SOURCE_CYCLEMAP);
226 my_bt_source_maplint(void *data, Evas_Object *obj, void *event_info)
228 elm_map_source_set(data, ELM_MAP_SOURCE_MAPLINT);
232 my_bt_add(void *data, Evas_Object *obj, void *event_info)
235 Elm_Map_Group_Class *g_clas;
236 Elm_Map_Marker_Class *m_clas;
237 Marker_Data *d = &data7;
239 for(i =0; i<1000; i++)
243 int r1 = rand() % (180*2*100);
244 if(r1<=180) r1 = -r1;
245 else r1 = r1 - 180*100;
247 int r2 = rand() % (85*2*100);
249 else r2 = r2 - 85*100;
251 int style = rand() % 3;
258 m_clas = itc_parking;
259 g_clas = itc_group_parking;
269 elm_map_marker_add(data, r1/100., r2/100., m_clas, g_clas, d);
272 printf("nb elements: %d\n", nb_elts);
276 _marker_get(Evas_Object *obj, Elm_Map_Marker *marker, void *data)
278 Marker_Data *d = data;
280 Evas_Object *bx = elm_box_add(obj);
281 evas_object_show(bx);
285 Evas_Object *icon = elm_icon_add(obj);
286 elm_icon_file_set(icon, d->file, NULL);
287 evas_object_show(icon);
289 Evas_Object *o = elm_button_add(obj);
290 elm_button_icon_set(o, icon);
292 elm_box_pack_end(bx, o);
296 Evas_Object *o = evas_object_image_add(evas_object_evas_get(obj));
297 evas_object_image_file_set(o, d->file, NULL);
298 evas_object_image_filled_set(o, EINA_TRUE);
299 evas_object_size_hint_min_set(o, 64, 64);
301 elm_box_pack_end(bx, o);
303 Evas_Object *lbl = elm_label_add(obj);
304 elm_label_label_set(lbl, "Wolves Go !");
305 evas_object_show(lbl);
306 elm_box_pack_end(bx, lbl);
313 _icon_get(Evas_Object *obj, Elm_Map_Marker *marker, void *data)
315 Marker_Data *d = data;
317 Evas_Object *icon = elm_icon_add(obj);
318 elm_icon_file_set(icon, d->file, NULL);
319 evas_object_show(icon);
325 _group_icon_get(Evas_Object *obj, void *data)
329 Evas_Object *icon = elm_icon_add(obj);
330 elm_icon_file_set(icon, file, NULL);
331 evas_object_show(icon);
337 _map_mouse_wheel_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
339 Evas_Object *map = data;
340 Evas_Event_Mouse_Wheel *ev = (Evas_Event_Mouse_Wheel*) event_info;
342 //unset the mouse wheel
343 ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
345 zoom = elm_map_zoom_get(map);
352 elm_map_zoom_mode_set(map, ELM_MAP_ZOOM_MODE_MANUAL);
353 if (zoom >= 0 && zoom <= 18) elm_map_zoom_set(map, zoom);
357 _map_move_resize_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
361 evas_object_geometry_get(data,&x,&y,&w,&h);
362 evas_object_resize(rect,w,h);
363 evas_object_move(rect,x,y);
367 test_map(void *data, Evas_Object *obj, void *event_info)
369 Evas_Object *win, *bg, *map, *tb2, *bt, *bx;
371 win = elm_win_add(NULL, "map", ELM_WIN_BASIC);
372 elm_win_title_set(win, "Map");
373 elm_win_autodel_set(win, 1);
375 bg = elm_bg_add(win);
376 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
377 elm_win_resize_object_add(win, bg);
378 evas_object_show(bg);
380 map = elm_map_add(win);
385 evas_object_size_hint_weight_set(map, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
386 elm_win_resize_object_add(win, map);
387 evas_object_data_set(map, "window", win);
390 itc1 = elm_map_marker_class_new(map);
391 elm_map_marker_class_get_cb_set(itc1, _marker_get);
392 elm_map_marker_class_del_cb_set(itc1, NULL);
394 itc2 = elm_map_marker_class_new(map);
395 elm_map_marker_class_get_cb_set(itc2, _marker_get);
396 elm_map_marker_class_del_cb_set(itc2, NULL);
397 elm_map_marker_class_style_set(itc2, "radio2");
399 itc_parking = elm_map_marker_class_new(map);
400 elm_map_marker_class_get_cb_set(itc_parking, _marker_get);
401 elm_map_marker_class_del_cb_set(itc_parking, NULL);
402 elm_map_marker_class_icon_cb_set(itc_parking, _icon_get);
403 elm_map_marker_class_style_set(itc_parking, "empty");
407 itc_group1 = elm_map_group_class_new(map);
408 elm_map_group_class_data_set(itc_group1, PACKAGE_DATA_DIR"/images/plant_01.jpg");
410 itc_group2 = elm_map_group_class_new(map);
411 elm_map_group_class_style_set(itc_group2, "radio2");
412 elm_map_group_class_zoom_displayed_set(itc_group1, 3);
414 itc_group_parking = elm_map_group_class_new(map);
415 elm_map_group_class_icon_cb_set(itc_group_parking, _group_icon_get);
416 elm_map_group_class_data_set(itc_group_parking, PACKAGE_DATA_DIR"/images/parking.png");
417 elm_map_group_class_style_set(itc_group_parking, "empty");
418 elm_map_group_class_zoom_displayed_set(itc_group_parking, 5);
422 rect = evas_object_rectangle_add(evas_object_evas_get(win));
423 evas_object_color_set(rect, 0, 0, 0, 0);
424 evas_object_repeat_events_set(rect,1);
425 evas_object_show(rect);
426 evas_object_event_callback_add(rect, EVAS_CALLBACK_MOUSE_WHEEL,
427 _map_mouse_wheel_cb, map);
428 evas_object_raise(rect);
430 evas_object_event_callback_add(map, EVAS_CALLBACK_RESIZE,
431 _map_move_resize_cb, map);
432 evas_object_event_callback_add(map, EVAS_CALLBACK_MOVE,
433 _map_move_resize_cb, map);
435 Elm_Map_Marker *marker =
436 elm_map_marker_add(map, 2.352, 48.857, itc1, itc_group1, &data1);
437 marker = elm_map_marker_add(map, 2.355, 48.857, itc1, itc_group1, &data3);
438 marker = elm_map_marker_add(map, 3, 48.857, itc2, itc_group1, &data2);
439 marker = elm_map_marker_add(map, 2.352, 49, itc2, itc_group1, &data1);
441 marker = elm_map_marker_add(map, 7.31451, 48.857127, itc1, itc_group1, &data10);
442 marker = elm_map_marker_add(map, 7.314704, 48.857119, itc1, itc_group1, &data4);
443 marker = elm_map_marker_add(map, 7.314704, 48.857119, itc2, itc_group1, &data5);
444 marker = elm_map_marker_add(map, 7.31432, 48.856785, itc2, itc_group1, &data6);
445 marker = elm_map_marker_add(map, 7.3148, 48.85725, itc1, itc_group2, &data7);
446 marker = elm_map_marker_add(map, 7.316445, 48.8572210000694, itc1, itc_group1, &data8);
447 marker = elm_map_marker_add(map, 7.316527000125, 48.85609, itc2, itc_group2, &data9);
448 marker = elm_map_marker_add(map, 7.3165409990833, 48.856078, itc2, itc_group1, &data11);
449 marker = elm_map_marker_add(map, 7.319812, 48.856561, itc2, itc_group2, &data10);
453 evas_object_smart_callback_add(map, "clicked", my_map_clicked, win);
454 evas_object_smart_callback_add(map, "press", my_map_press, win);
455 evas_object_smart_callback_add(map, "longpressed", my_map_longpressed, win);
456 evas_object_smart_callback_add(map, "clicked,double", my_map_clicked_double, win);
457 evas_object_smart_callback_add(map, "load", my_map_load, win);
458 evas_object_smart_callback_add(map, "loaded", my_map_loaded, win);
459 evas_object_smart_callback_add(map, "load,details", my_map_load_details, win);
460 evas_object_smart_callback_add(map, "loaded,details", my_map_loaded_details, win);
461 evas_object_smart_callback_add(map, "zoom,start", my_map_zoom_start, win);
462 evas_object_smart_callback_add(map, "zoom,stop", my_map_zoom_stop, win);
463 evas_object_smart_callback_add(map, "zoom,change", my_map_zoom_change, win);
464 evas_object_smart_callback_add(map, "scroll,anim,start", my_map_anim_start, win);
465 evas_object_smart_callback_add(map, "scroll,anim,stop", my_map_anim_stop, win);
466 evas_object_smart_callback_add(map, "scroll,drag,start", my_map_drag_start, win);
467 evas_object_smart_callback_add(map, "scroll,drag,stop", my_map_drag_stop, win);
468 evas_object_smart_callback_add(map, "scroll", my_map_scroll, win);
470 evas_object_show(map);
472 tb2 = elm_table_add(win);
473 evas_object_size_hint_weight_set(tb2, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
474 elm_win_resize_object_add(win, tb2);
476 bt = elm_button_add(win);
477 elm_button_label_set(bt, "Z -");
478 evas_object_smart_callback_add(bt, "clicked", my_bt_zoom_out, map);
479 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
480 evas_object_size_hint_align_set(bt, 0.1, 0.1);
481 elm_table_pack(tb2, bt, 0, 0, 1, 1);
482 evas_object_show(bt);
484 bt = elm_button_add(win);
485 elm_button_label_set(bt, "Add 1000 markers");
486 evas_object_smart_callback_add(bt, "clicked", my_bt_add, map);
487 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
488 evas_object_size_hint_align_set(bt, 0.5, 0.1);
489 elm_table_pack(tb2, bt, 1, 0, 1, 1);
490 evas_object_show(bt);
492 bt = elm_button_add(win);
493 elm_button_label_set(bt, "Z +");
494 evas_object_smart_callback_add(bt, "clicked", my_bt_zoom_in, map);
495 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
496 evas_object_size_hint_align_set(bt, 0.9, 0.1);
497 elm_table_pack(tb2, bt, 2, 0, 1, 1);
498 evas_object_show(bt);
500 bt = elm_button_add(win);
501 elm_button_label_set(bt, "Show Paris");
502 evas_object_smart_callback_add(bt, "clicked", my_bt_show_reg, map);
503 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
504 evas_object_size_hint_align_set(bt, 0.1, 0.5);
505 elm_table_pack(tb2, bt, 0, 1, 1, 1);
506 evas_object_show(bt);
508 bt = elm_button_add(win);
509 elm_button_label_set(bt, "Bring Paris");
510 evas_object_smart_callback_add(bt, "clicked", my_bt_bring_reg, map);
511 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
512 evas_object_size_hint_align_set(bt, 0.9, 0.5);
513 elm_table_pack(tb2, bt, 2, 1, 1, 1);
514 evas_object_show(bt);
517 bx = elm_box_add(win);
518 evas_object_show(bx);
519 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
520 evas_object_size_hint_align_set(bx, 0.1, 0.9);
521 elm_table_pack(tb2, bx, 0, 2, 1, 1);
523 bt = elm_button_add(win);
524 elm_button_label_set(bt, "Pause On/Off");
525 evas_object_smart_callback_add(bt, "clicked", my_bt_pause, map);
526 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
527 evas_object_size_hint_align_set(bt, 0.1, 0.9);
528 evas_object_show(bt);
529 elm_box_pack_end(bx, bt);
531 bt = elm_button_add(win);
532 elm_button_label_set(bt, "Markers pause On/Off");
533 evas_object_smart_callback_add(bt, "clicked", my_bt_markers_pause, map);
534 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
535 evas_object_size_hint_align_set(bt, 0.1, 0.9);
536 evas_object_show(bt);
537 elm_box_pack_end(bx, bt);
541 bx = elm_box_add(win);
542 evas_object_show(bx);
543 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
544 evas_object_size_hint_align_set(bx, 0.5, 0.9);
545 elm_table_pack(tb2, bx, 1, 2, 1, 1);
547 bt = elm_button_add(win);
548 elm_button_label_set(bt, "Fit");
549 evas_object_smart_callback_add(bt, "clicked", my_bt_zoom_fit, map);
550 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
551 evas_object_size_hint_align_set(bt, 0.5, 0.9);
552 evas_object_show(bt);
553 elm_box_pack_end(bx, bt);
555 bt = elm_button_add(win);
556 elm_button_label_set(bt, "Fill");
557 evas_object_smart_callback_add(bt, "clicked", my_bt_zoom_fill, map);
558 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
559 evas_object_size_hint_align_set(bt, 0.5, 0.9);
560 evas_object_show(bt);
561 elm_box_pack_end(bx, bt);
565 bx = elm_box_add(win);
566 evas_object_show(bx);
567 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
568 evas_object_size_hint_align_set(bx, 1.0, 0.9);
569 elm_table_pack(tb2, bx, 2, 2, 1, 1);
571 bt = elm_button_add(win);
572 elm_button_label_set(bt, "Mapnik");
573 evas_object_smart_callback_add(bt, "clicked", my_bt_source_mapnik, map);
574 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
575 evas_object_size_hint_align_set(bt, 1.0, 0.9);
576 evas_object_show(bt);
577 elm_box_pack_end(bx, bt);
579 bt = elm_button_add(win);
580 elm_button_label_set(bt, "Osmarender");
581 evas_object_smart_callback_add(bt, "clicked", my_bt_source_osmarender, map);
582 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
583 evas_object_size_hint_align_set(bt, 1.0, 0.9);
584 evas_object_show(bt);
585 elm_box_pack_end(bx, bt);
587 bt = elm_button_add(win);
588 elm_button_label_set(bt, "Cycle Map");
589 evas_object_smart_callback_add(bt, "clicked", my_bt_source_cyclemap, map);
590 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
591 evas_object_size_hint_align_set(bt, 1.0, 0.9);
592 evas_object_show(bt);
593 elm_box_pack_end(bx, bt);
595 bt = elm_button_add(win);
596 elm_button_label_set(bt, "Maplint");
597 evas_object_smart_callback_add(bt, "clicked", my_bt_source_maplint, map);
598 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
599 evas_object_size_hint_align_set(bt, 1.0, 0.9);
600 evas_object_show(bt);
601 elm_box_pack_end(bx, bt);
604 evas_object_show(tb2);
607 evas_object_resize(win, 800, 800);
608 evas_object_show(win);