def capital_cb(self, data): """Called when the page of a capital is downloaded. The page is expected to have the coordinates of the capital.""" soup = BeautifulSoup(data) heading = soup.find("h1", { "id" : "firstHeading" }) if not heading: return name = heading.contents[0] geo = soup.find("span", { "class" : "geo" }) if not geo: return latitude, longitude = geo.contents[0].split(";") latitude = float(latitude) longitude = float(longitude) # Keep only a few capitals at each iteration we remove a capital if len(self.markers) == 5: marker = self.markers[0] self.layer.remove(marker) self.markers.remove(marker) font = "Sans 15" white = clutter.Color(0xff, 0xff, 0xff, 0xff) orange = clutter.Color(0xf3, 0x94, 0x07, 0xbb) black = clutter.Color(0x00, 0x00, 0x00, 0xff) if self.markers: #Change the colour of the last marker's text last = self.markers.pop() self.layer.remove(last) marker = champlain.marker_new_with_text(last.name, font, black, orange) marker.set_position(last.get_property("latitude"), \ last.get_property("longitude")) self.markers.append(marker) self.layer.add(marker) marker.raise_top() marker = champlain.marker_new_with_text(name, font, white, orange) marker.set_position(latitude, longitude) marker.name = name self.markers.append(marker) self.layer.add(marker) marker.raise_top() self.map.go_to(latitude, longitude)
def add_marker(self, text, latitude, longitude, bg_color=None, text_color=None, font="Airmole 8"): if not text_color: text_color = self.white if not bg_color: bg_color = self.gray marker = champlain.marker_new_with_text(text, font, text_color, bg_color) #marker.set_position(38.575935, -7.921326) if latitude and longitude: marker.set_position(latitude, longitude) self.add(marker) return marker
def add_marker(self, text, latitude, longitude, bg_color=None, text_color=None, font="Airmole 8"): if not text_color: text_color = self.white if not bg_color: bg_color = self.gray marker = champlain.marker_new_with_text(text, font, text_color, bg_color) # marker.set_position(38.575935, -7.921326) if latitude and longitude: marker.set_position(latitude, longitude) self.add(marker) return marker
def create_marker_layer(view): orange = clutter.Color(0xf3, 0x94, 0x07, 0xbb) black = clutter.Color(0x00, 0x00, 0x00, 0xff) layer = champlain.Layer() marker = champlain.marker_new_with_text( "Montréal\n<span size=\"xx-small\">Québec</span>", "Serif 14", black, orange) marker.set_use_markup(True) marker.set_alignment(pango.ALIGN_RIGHT) marker.set_color(orange) marker.set_position(45.528178, -73.563788) layer.add_marker(marker) marker.set_reactive(True) marker.connect("button-release-event", marker_button_release_cb, view) marker = champlain.marker_new_from_file( "/usr/share/icons/gnome/24x24/emblems/emblem-generic.png") marker.set_text("New York") marker.set_position(40.77, -73.98) layer.add_marker(marker) marker = champlain.marker_new_from_file( "/usr/share/icons/gnome/24x24/emblems/emblem-important.png") marker.set_position(47.130885, -70.764141) layer.add_marker(marker) marker = champlain.marker_new_from_file( "/usr/share/icons/gnome/24x24/emblems/emblem-favorite.png") marker.set_draw_background(False) marker.set_position(45.41484, -71.918907) layer.add_marker(marker) layer.show() return layer