Geography : feature request #8428 for kml files loading.
This commit is contained in:
parent
9e7ec88d3f
commit
9e648b0de5
@ -68,6 +68,7 @@ from .osmgps import OsmGps
|
||||
from .selectionlayer import SelectionLayer
|
||||
from .placeselection import PlaceSelection
|
||||
from .cairoprint import CairoPrintSave
|
||||
from .libkml import Kml
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
@ -350,6 +351,11 @@ class GeoGraphyView(OsmGps, NavigationView):
|
||||
add_item.show()
|
||||
menu.append(add_item)
|
||||
|
||||
add_item = Gtk.MenuItem(label=_("Add place from kml"))
|
||||
add_item.connect("activate", self.add_place_from_kml, event, lat , lon)
|
||||
add_item.show()
|
||||
menu.append(add_item)
|
||||
|
||||
add_item = Gtk.MenuItem(label=_("Center here"))
|
||||
add_item.connect("activate", self.set_center, event, lat , lon)
|
||||
add_item.show()
|
||||
@ -923,6 +929,48 @@ class GeoGraphyView(OsmGps, NavigationView):
|
||||
self.selection_layer, self.place_list,
|
||||
lat, lon, self.__add_place)
|
||||
|
||||
def add_place_from_kml(self, menu, event, lat, lon):
|
||||
"""
|
||||
Add new place(s) from a kml file
|
||||
|
||||
1 - ask for a kml file ?
|
||||
2 - Read the kml file.
|
||||
3 - create the place(s) with name and title found in the kml marker.
|
||||
|
||||
"""
|
||||
# Ask for the kml file
|
||||
filter = Gtk.FileFilter()
|
||||
filter.add_pattern("*.kml")
|
||||
kml = Gtk.FileChooserDialog(
|
||||
_("Select a kml file used to add places"),
|
||||
action=Gtk.FileChooserAction.OPEN,
|
||||
buttons=(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
|
||||
Gtk.STOCK_APPLY, Gtk.ResponseType.OK))
|
||||
mpath = HOME_DIR
|
||||
kml.set_current_folder(os.path.dirname(mpath))
|
||||
kml.set_filter(filter)
|
||||
|
||||
status = kml.run()
|
||||
if status == Gtk.ResponseType.OK:
|
||||
val = conv_to_unicode(kml.get_filename())
|
||||
if val:
|
||||
kmlfile = Kml(val)
|
||||
points = kmlfile.add_points()
|
||||
for place in points:
|
||||
(name, coords) = place
|
||||
latlong = coords.pop()
|
||||
(lat, lon) = latlong
|
||||
new_place = Place()
|
||||
new_place.set_name(name)
|
||||
new_place.set_title(name)
|
||||
new_place.set_latitude(str(lat))
|
||||
new_place.set_longitude(str(lon))
|
||||
try:
|
||||
EditPlace(self.dbstate, self.uistate, [], new_place)
|
||||
except WindowActiveError:
|
||||
pass
|
||||
kml.destroy()
|
||||
|
||||
def link_place(self, menu, event, lat, lon):
|
||||
"""
|
||||
Link an existing place using longitude and latitude of location centered
|
||||
|
Loading…
Reference in New Issue
Block a user