nzjrs / osm-gps-map

A Gtk+ Widget for Displaying OpenStreetMap tiles LOOKING FOR A NEW MAINTAINER
http://nzjrs.github.com/osm-gps-map
GNU General Public License v2.0
135 stars 58 forks source link

Python - how to add a polygon? #103

Closed RoDuth closed 11 months ago

RoDuth commented 11 months ago

Looking at the examples polygon.c and trying to add a similar polygon to mapviewer.py I tried this:

        track = osmgpsmap.MapTrack()
        track.add_point(osmgpsmap.MapPoint.new_radians(1.25663706, -0.488692191))
        track.add_point(osmgpsmap.MapPoint.new_radians(1.06465084, -0.750491578))
        track.add_point(osmgpsmap.MapPoint.new_radians(1.064650849, -0.191986218))

        poly = osmgpsmap.MapPolygon(track=track)
        # NOTE also tried these:
        # poly = osmgpsmap.MapPolygon()
        # poly.props.track = track
        # poly.set_property("track", track)

        self.osm.polygon_add(poly)

The example crashes with: TypeError: could not convert value for property `track' from MapTrack to gpointer or when using one of the alternatives methods of setting the track as commented out above

ValueError: Pointer arguments are restricted to integers, capsules, and None. See: https://bugzilla.gnome.org/show_bug.cgi?id=683599

(mapviewer_polygon.py:85753): GLib-GObject-CRITICAL **: 16:04:59.925: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

Am I missing something?

RoDuth commented 11 months ago

I seem to have worked it out. Correct approach is:

        poly = osmgpsmap.MapPolygon.new()
        track = poly.get_track()
        track.add_point(osmgpsmap.MapPoint.new_radians(1.25663706, -0.488692191))
        track.add_point(osmgpsmap.MapPoint.new_radians(1.06465084, -0.750491578))
        track.add_point(osmgpsmap.MapPoint.new_radians(1.064650849, -0.191986218))

        self.osm.polygon_add(poly)