Opened 16 years ago

Closed 16 years ago

Last modified 12 years ago

#7619 closed (fixed)

GIS/GoogleMaps: Support for point geometries in map creation

Reported by: LudwigBrinckmann Owned by: jbronn
Component: GIS Version: gis
Severity: Keywords: Google Maps Markers
Cc: Triage Stage: Unreviewed
Has patch: yes Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

The automatic creation of Google maps in the GIS branch supports the display of Polygons and Polylines, but not Points.

The attached patch adds the display of Points as GMarkers by adding another class GMarker to the overlays defined in overlays.py. The GMarker is very similar to polygons and polylines, but has the option to attach a title to it, whch will appear in Google Maps as a tooltip when moving over the marker. In addition the GoogleMap class takes another keyword parameter points to pass the point data through to the template.

Another option to implement the marker functionality would be to use a marker manager, as defined in the Google Maps API, which has the ability to deal with large amount of markers. The proposed patch, however, works fine with a small amount of markers.

The patch furthermore extends the model by having a GEvent class that allows to attach an event, such as 'click' to a line, polygon or point. A bit of example code for this is given in overlays.py:

     from django.shortcuts import render_to_response
      from django.contrib.gis.maps.google.gmap import GoogleMap
      from django.contrib.gis.maps.google.overlays import GMarker, GEvent
      from django.contrib.gis.geos import fromstr

      def sample_request(request):
          points = []
          location = fromstr('POINT(101 26)')
          point = GMarker(location)
          event = GEvent('click', 
            'function() { location.href = "http://www.google.com"}')
          point.add_event(event)
          points.append(point)
          return render_to_response('mytemplate.html', 
          {'google' : GoogleMap(points=points)})

There is a working version of (a slightly older version of this patch) in the small map on the right hand panel at http://www.yunnanexplorer.com/festivals.

Attachments (1)

gis-googlemaps.diff (10.3 KB ) - added by ludwigbrinckmann@… 16 years ago.
Patch

Download all attachments as: .zip

Change History (5)

by ludwigbrinckmann@…, 16 years ago

Attachment: gis-googlemaps.diff added

Patch

comment:1 by jbronn, 16 years ago

milestone: 1.0 beta
Owner: changed from nobody to jbronn
Version: SVNgis

comment:2 by jbronn, 16 years ago

Resolution: fixed
Status: newclosed

(In [7841]) gis: Fixed #7619. Added support Google Maps markers (GMarker) and events (GEvent). Thanks, Ludwig Brinckmann.

comment:3 by jbronn, 16 years ago

I've revised the patch a bit in r7841 -- here's how you would do it now:

from django.shortcuts import render_to_response
from django.contrib.gis.maps.google import GoogleMap GMarker, GEvent

def sample_request(request):
    marker = GMarker('POINT(101 26)') # Could also be GMarker((101, 26))
    event = GEvent('click', 'function() { location.href = "http://www.google.com"}')
    marker.add_event(event)
    return render_to_response('mytemplate.html', {'google' : GoogleMap(markers=[marker])})

comment:4 by Jacob, 12 years ago

milestone: 1.0 beta

Milestone 1.0 beta deleted

Note: See TracTickets for help on using tickets.
Back to Top