Anthony,
Thank you very much, that works.
Margaret
On Wednesday, June 6, 2012 11:13:58 AM UTC-5, Anthony wrote:
>
> plugin_gmap.represent=lambda row: '%(state_name)s %(capital_latitude)s
> %(capital_longitude)s '
>
> should be:
>
> plugin_gmap.represent=lambda row: '%(state_name)s %(capital_latitude)s
> %(capital_longitude)s' % row
>
> Anthony
>
> On Wednesday, June 6, 2012 11:57:12 AM UTC-4, greaneym wrote:
>>
>> Hi,
>>
>> I am having some difficulty in plottings some points on a gmap with
>> informational attributes and I hope someone can help me understand what
>> mistakes I am making. I am aware that these cities are already marked on
>> the map, but I want to
>> add these markers for a quiz app I'm making.
>>
>> The points plot correctly, but when I click on the marker, instead of
>> getting information of "state_name, latitude, longitude" values, I get
>> the string, %(statename)s %(capital_latitude)s %(capital_longitude)s
>>
>> I don't understand how to modify the files to display the right values.
>>
>>
>> I created a copy of the welcome application and then installed the
>> gmap_plugin
>> that Massimo Di Pierro provided via the wp2 file in an application called
>> "testmap".
>>
>> I can see the map successfully shown if I click on "index" under the
>> gmap_plugin controller in the ide.
>>
>> When I add the line
>>
>> {{=LOAD('plugin_gmap')}}
>> into the view/default/index.html file, the map shows up there as well.
>>
>> I made a csv file containing the 50 USs states, their capital city name,
>> and the lat, long of the capitals, and loaded that into a db file named
>> db5.py.
>> db.define_table('capitals',
>> Field('state_name','string', requires=IS_NOT_EMPTY()),
>> Field('capital_name','string',requires=IS_NOT_EMPTY()),
>>
>> Field('capital_latitude','double',requires=IS_FLOAT_IN_RANGE(0,10**7)),
>>
>> Field('capital_longitude','double',requires=IS_FLOAT_IN_RANGE(0,10**7)),
>> )
>>
>> In the ide, the fields show up ok:
>> In [7] : print db.capitals.fields
>> ['id', 'state_name', 'capital_name', 'capital_latitude',
>> 'capital_longitude']
>>
>> After the csv import, I can see the data: (snip)
>>
>> 50 selected
>> capitals.id capitals.state_name capitals.capital_name
>> capitals.capital_latitude capitals.capital_longitude
>> 1 Alabama Montgomery 32.361538 -86.279118
>> 2 Alaska Juneau 58.301935 -134.41974
>> 3 Arizona Phoenix 33.448457 -112.073844
>> 4 Arkansas Little Rock 34.736009 -92.331122
>>
>> etc.
>>
>> At this point, I should be able to do a select in the gmap_plugin.py in
>> the
>> models directory, and then be able to plot the points as markers on the
>> map by
>> editing the views/default/index.html file or the index file in the
>> gmap_plugin directory. This part worked ok.
>>
>> Here's what I've tried but the info in the marker is not working. Could
>> someone please give
>> me suggestions why it is wrong? Thanks.
>>
>> First I check that a selection into lat,long points works.
>>
>> points =
>> db(capitals.capital_latitude,capitals.capital_longitude,orderby=capitals.state_name)
>>
>>
>> .
>> points =
>> db(db.capitals.capital_latitude,db.capital.capital_longitude).select()
>> print points
>>
>> snip --
>> 'Wisconsin', 'capital_name': ' Madison', 'id': 49}, {'capital_longitude':
>> -104.802042, 'capital_latitude': 41.145547999999998, 'state_name':
>> 'Wyoming', 'capital_name': ' Cheyenne', 'id': 50}]
>> :w!
>>
>> rows =db().select(db.capitals.ALL, orderby=capitals.state_name)
>> print rows
>>
>> gives all information
>> {'capital_longitude': -104.802042, 'capital_latitude':
>> 41.145547999999998, 'state_name': 'Wyoming', 'capital_name': ' Cheyenne',
>> 'id': 50}]
>>
>>
>> Here is the modified plugin_gmap.py model file:
>>
>> from gluon.storage import Storage
>> plugin_gmap=Storage()
>>
>> plugin_gmap.key='ABQIAAAAnfs7bKE82qgb3Zc2YyS-oBT2yXp_ZAY8_ufC3CFXhHIE1NvwkxSySz_REpPq-4WZA27OwgbtyR3VcA'
>>
>> # key for localhost
>> plugin_gmap.set=db(db.capitals.id>0).select() ### change this to a query
>> that lists records with latitude and longitute
>> points=db(db.capitals.id>0).select() ### change this to a query that
>> lists records with latitude and longitute
>> plugin_gmap.represent=lambda row: '%(state_name)s %(capital_latitude)s
>> %(capital_longitude)s '
>> # include plugin in views with {{=LOAD('plugin_gmap')}}
>>
>>
>> Here is the modified plugin_gmap.py controller file:
>> def index():
>> width = request.vars.width or 400
>> height = request.vars.height or 300
>> #rows = plugin_gmap.set.select()
>> rows = db(db.capitals.id>0).select()
>> for row in rows:
>> row.plugin_gmap_popup = plugin_gmap.represent(row)
>> return
>> dict(width=width,height=height,rows=rows,GOOGLEMAP_KEY=plugin_gmap.key)
>> ~
>>
>>
>> Here is the modified plugin_gmap view file:
>>
>> <script src="
>> http://maps.google.com/maps?file=api&v=2&key={{=GOOGLEMAP_KEY}}<http://maps.google.com/maps?file=api&v=2&key=%7B%7B=GOOGLEMAP_KEY%7D%7D>"
>>
>> type="text/javascript"></script>
>> <script type="text/javascript">
>> //<![CDATA[
>> function load() {
>> if (GBrowserIsCompatible()) {
>> var map = new GMap2(document.getElementById("map"));
>> map.addControl(new GSmallMapControl());
>> map.addControl(new GMapTypeControl());
>> map.setCenter(new GLatLng(0,0), 1);
>> // Create a base icon for all of our markers that specifies the
>> // shadow, icon dimensions, etc.
>> var baseIcon = new GIcon();
>> baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
>> baseIcon.iconSize = new GSize(20, 34);
>> baseIcon.shadowSize = new GSize(37, 34);
>> baseIcon.iconAnchor = new GPoint(9, 34);
>> baseIcon.infoWindowAnchor = new GPoint(9, 2);
>> baseIcon.infoShadowAnchor = new GPoint(18, 14);
>> var blueIcon = new GIcon();
>> blueIcon.image = "
>> http://www.google.com/intl/en_us/mapfiles/ms/micons/blue-dot.png";
>> blueIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
>> blueIcon.iconSize = new GSize(37, 34);
>> blueIcon.shadowSize = new GSize(37, 34);
>> blueIcon.iconAnchor = new GPoint(9, 34);
>> blueIcon.infoWindowAnchor = new GPoint(9, 2);
>> blueIcon.infoShadowAnchor = new GPoint(18, 14);
>>
>> function createMarker(point, i, message) {
>> // Set up our GMarkerOptions object
>> if(i==0) markerOptions = { icon:blueIcon };
>> else markerOptions= {}
>> var marker = new GMarker(point, markerOptions);
>> GEvent.addListener(marker, "click", function() {
>> marker.openInfoWindowHtml(message);
>> });
>> return marker;
>> }
>> {{for row in rows:}}{{if row.capital_latitude and
>> row.capital_longitude:}}
>> var point = new
>> GLatLng({{=row.capital_latitude}},{{=row.capital_longitude}});
>> map.addOverlay(createMarker(point, 0,
>> '{{=str(row.plugin_gmap_popup).replace("'","\\'")}}'));
>> {{pass}}{{pass}}
>> }
>> }
>> //]]>
>> </script>
>> <center>
>> <div id="map" style="width: {{=width}}px; height: {{=height}}px"></div>
>> <script>load();</script>
>> </center>
>>
>>
>> Thanks for any help.
>>
>> Margaret
>>
>>