Esempio n. 1
0
void
gourmap_ui_update_map (GourmapUi    *ui,
		       const double  my_lat,
		       const double  my_lng,
		       const double  center_lat,
		       const double  center_lng,
		       GList        *poi_list)
{
	GourmapUiPrivate *priv = GET_PRIVATE (ui);
	ClutterActor *marker;
	ClutterColor *color;
	Restaurant *rest;
	GList *list_i;

	/* remove previous markers */
	champlain_marker_layer_remove_all (priv->marker_layer);

	champlain_view_set_zoom_level (priv->champ_view, priv->zoom);

	champlain_view_go_to (priv->champ_view, my_lat, my_lng);

	color = clutter_color_new (0xff, 0x20, 0x15, 0xbb);
	marker = champlain_label_new_with_text (_("I'm here"),
						"Serif 14", NULL, color);
	clutter_color_free (color);
	champlain_location_set_location (CHAMPLAIN_LOCATION (marker),
					 my_lat, my_lng);
	champlain_marker_layer_add_marker (priv->marker_layer,
					   CHAMPLAIN_MARKER (marker));

	/* Put restaurant markers */
	list_i = poi_list;
	color = clutter_color_new (0xff, 0x20, 0xff, 0xbb);
	while (list_i != NULL) {
		rest = (Restaurant *)list_i->data;
		marker = champlain_label_new_with_text (rest->name,
							"Serif 10",
							NULL, color);
		champlain_location_set_location (CHAMPLAIN_LOCATION (marker),
						 rest->latitude,
						 rest->longitude);
		champlain_marker_layer_add_marker (priv->marker_layer,
						   CHAMPLAIN_MARKER (marker));
		list_i = g_list_next (list_i);
	}
	clutter_color_free (color);

	champlain_marker_layer_show_all_markers (priv->marker_layer);
}
Esempio n. 2
0
static void
gth_map_view_init (GthMapView *self)
{
	ClutterActor *scale;

	self->priv = GTH_MAP_VIEW_GET_PRIVATE (self);

	gtk_box_set_spacing (GTK_BOX (self), 6);
	gtk_container_set_border_width (GTK_CONTAINER (self), 2);
	gtk_orientable_set_orientation (GTK_ORIENTABLE (self), GTK_ORIENTATION_VERTICAL);

	/* No GPS label */

	self->priv->no_gps_label = gtk_label_new (_("The geographical position information is not available for this image."));
	g_object_set (G_OBJECT (self->priv->no_gps_label),
		      "wrap", TRUE,
		      "wrap-mode", PANGO_WRAP_WORD_CHAR,
		      "single-line-mode", FALSE,
		      "justify", GTK_JUSTIFY_CENTER,
		      "width-request", LABEL_MAX_WIDTH,
		      NULL);
	gtk_widget_show (self->priv->no_gps_label);
	gtk_box_pack_start (GTK_BOX (self), self->priv->no_gps_label, TRUE, TRUE, 0);

	/* The map widget */

	self->priv->embed = gtk_champlain_embed_new ();

	self->priv->map_view = gtk_champlain_embed_get_view (GTK_CHAMPLAIN_EMBED (self->priv->embed));
	g_object_set (G_OBJECT (self->priv->map_view),
		      "reactive", TRUE,
		      "zoom-level", 5,
		      "zoom-on-double-click", TRUE,
		      "kinetic-mode", TRUE,
		      NULL);

	scale = champlain_scale_new ();
	champlain_scale_connect_view (CHAMPLAIN_SCALE (scale), self->priv->map_view);
	champlain_view_bin_layout_add (self->priv->map_view,
				       scale,
				       CLUTTER_BIN_ALIGNMENT_START,
				       CLUTTER_BIN_ALIGNMENT_END);

	self->priv->marker_layer = champlain_marker_layer_new ();
	champlain_view_add_layer (self->priv->map_view, CHAMPLAIN_LAYER (self->priv->marker_layer));
	clutter_actor_show (CLUTTER_ACTOR (self->priv->marker_layer));

	self->priv->marker = champlain_label_new_with_text ("", "Sans 10", NULL, NULL);
	clutter_actor_show (self->priv->marker);
	champlain_marker_layer_add_marker (self->priv->marker_layer, CHAMPLAIN_MARKER (self->priv->marker));

	gtk_widget_show_all (self->priv->embed);
	gtk_widget_hide (self->priv->embed);

	gtk_box_pack_start (GTK_BOX (self), self->priv->embed, TRUE, TRUE, 0);
}
Esempio n. 3
0
static ChamplainMarker *
add_marker(PlacemarksPlugin *plugin, const gchar *name, gdouble lat, gdouble lon)
{
  PlacemarksPluginPrivate *priv;
  priv = PLACEMARKS_PLUGIN (plugin)->priv;
  ChamplainMarker *marker;

  ClutterColor orange = { 0xf3, 0x94, 0x07, 0xbb };
  marker = CHAMPLAIN_MARKER ( champlain_label_new_with_text (name, "Serif 14",
                                                              NULL, NULL));
  champlain_label_set_use_markup (CHAMPLAIN_LABEL (marker), TRUE);
  champlain_label_set_alignment (CHAMPLAIN_LABEL (marker), PANGO_ALIGN_RIGHT);
  champlain_label_set_color (CHAMPLAIN_LABEL (marker), &orange);

  champlain_location_set_location (CHAMPLAIN_LOCATION(marker), lat, lon);
  champlain_marker_layer_add_marker (priv->markers_layer, CHAMPLAIN_MARKER (marker));

  return marker;
}
Esempio n. 4
0
static gboolean add_marker (GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, gpointer data)
{
	int latitude_offset;
	int longitude_offset;
	double lat;
	double lon;
	gchar *title;
	gchar *latitude_str;
	gchar *longitude_str;
	gchar *check;
	ClutterActor *marker;
	ClutterActor *icon;
	PhidiasItemsGeo *item;

	item = data;

	latitude_offset = phidias_extra_column_get_index ((PhidiasExtraColumn*) g_ptr_array_index (item->priv->extras, 0));
	longitude_offset = phidias_extra_column_get_index ((PhidiasExtraColumn*) g_ptr_array_index (item->priv->extras, 1));

	gtk_tree_model_get (model, iter, ITEM_INFO_TITLE, &title,
			    latitude_offset, &latitude_str,
			    longitude_offset, &longitude_str, -1);

	if (latitude_str == NULL || longitude_str == NULL)
		goto end;

	check = NULL;
	lat = strtod (latitude_str, &check);
	if (*check != '\0')
		goto end;

	check = NULL;
	lon = strtod (longitude_str, &check);
	if (*check != '\0')
		goto end;

	check = g_markup_escape_text (title, -1);
	g_free (title);
	title = check;

	/*
		TODO	Provide a proper ChamplainMarker implementation, able to store the icon,
			the title, the description, and able to react to clicks
	*/

	icon = do_marker_icon ("go-jump", 22);

	if (item->priv->show_text) {
		marker = champlain_label_new_with_text (title, "Serif 9", NULL, NULL);
	}
	else {
		marker = champlain_label_new_with_text (title, "Serif 0", NULL, NULL);
		champlain_label_set_image (CHAMPLAIN_LABEL (marker), icon);
	}

	g_object_set_data (G_OBJECT (marker), "icon", icon);

	champlain_location_set_location (CHAMPLAIN_LOCATION (marker), lat, lon);
	champlain_marker_layer_add_marker (item->priv->current_layer, CHAMPLAIN_MARKER (marker));
	g_hash_table_insert (item->priv->markers, gtk_tree_path_to_string (path), marker);

end:
	if (title != NULL)
		g_free (title);
	if (latitude_str != NULL)
		g_free (latitude_str);
	if (longitude_str != NULL)
		g_free (longitude_str);

	return FALSE;
}