diff --git a/src/data/Mapstraction.css b/src/data/Mapstraction.css index 4a7b7ab36..77692d9f5 100644 --- a/src/data/Mapstraction.css +++ b/src/data/Mapstraction.css @@ -28,15 +28,32 @@ body#FamilyMap { background-color: #000; color: #000; margin: 0 auto; - width: 1060px; + width: 100%; padding: 0px 4px 0px 4px; } +div#largeYmap { + width: 800px; + margin: 0% 2% 0% 2%; +} +div#smallYmap { + width: 800px; + margin: 0% 7% 0% 7%; +} /* References ------------------------------------------------- */ -div#References { +body#FamilyMap div#References { background-color: #FFF; } +body#FamilyMap div#References ol { + list-style-type: decimal; +} +body#FamilyMap div#References ol li ol { + list-style-type: lower-alpha; +} +body#FamilyMap div#References ol li a { + text-decoration: none; +} /* Mapstraction ------------------------------------------------- */ @@ -63,17 +80,22 @@ div#geo-info { /* GoogleV3 ------------------------------------------------- */ div#googlev3 { - height: 500px; - width: 600px; border: solid 1px #000; } /* ************************************************************************************** - MiddleSection + middlesection ------------------------------------------------- */ -div#middlesection { +div#smallXMap { + height: 800px; float: center; + margin: 0% 0% 7% 0%; +} +div#largeXMap { + width: 1400px; + float: center; + margin: 0% 0% 2% 0%; } /* Family GoogleV3 diff --git a/src/plugins/webreport/NarrativeWeb.py b/src/plugins/webreport/NarrativeWeb.py index f0249a339..33a195e45 100644 --- a/src/plugins/webreport/NarrativeWeb.py +++ b/src/plugins/webreport/NarrativeWeb.py @@ -108,10 +108,29 @@ from libhtmlbackend import HtmlBackend from libgedcom import make_gedcom_date from PlaceUtils import conv_lat_lon #------------------------------------------------------------------------ -# # constants -# #------------------------------------------------------------------------ +# javascript header for family map and place page map +javascript_header = """ + var map; + var latlon; + + function initialize() { + + // create map object + map = new mxn.Mapstraction('familygooglev3', 'googlev3'); + + // add map controls to image + map.addControls({ + pan: true, + zoom: 'large', + scale: true, + disableDoubleClickZoom: true, + keyboardShortcuts: true, + scrollwheel: false, + map_type: true + });""" + # Translatable strings for variables within this plugin # gettext carries a huge footprint with it. AHEAD = _("Attributes") @@ -2509,44 +2528,26 @@ class PlacePage(BasePage): with Html("script", type = "text/javascript") as jsc: middle += jsc + jsc += javascript_header jsc += """ - var map; - var latlon; - - function initialize() { - - // create mxn object - map = new mxn.Mapstraction('googlev3','googlev3'); - - // add map controls to image - map.addControls({ - pan: true, - zoom: 'large', - scale: true, - disableDoubleClickZoom: true, - keyboardShortcuts: true, - scrollwheel: false, - map_type: true - }); - - latlon = new mxn.LatLonPoint(%s, %s);""" % (latitude, longitude) + latlon = new mxn.LatLonPoint(%s, %s);""" % (latitude, longitude) jsc += """ - // put map on page - map.setCenterAndZoom(latlon, 10); + // put map on page + map.setCenterAndZoom(latlon, 10); - var marker; + var marker; - // set marker at latitude/ longitude - marker = new mxn.Marker(latlon); + // set marker at latitude/ longitude + marker = new mxn.Marker(latlon); - // add marker InfoBubble() using place name - marker.setInfoBubble('
%s
'); """ % self.page_title + // add marker InfoBubble() using place name + marker.setInfoBubble('
%s
'); """ % self.page_title jsc += """ - // add marker to map - map.addMarker(marker, true); + // add marker to map + map.addMarker(marker, true); }""" # there is no need to add an ending "", # as it will be added automatically! @@ -3905,18 +3906,25 @@ class IndividualPage(BasePage): if not place_lat_long: return - # sort on X coordinates to get min and max X GPS Coordinates - place_lat_long = sorted(place_lat_long, key = operator.itemgetter(0, 1, 2)) - BoundMinX = place_lat_long[0][0] - BoundMaxX = place_lat_long[-1][0] + MinX = MaxX = "0.00000000" + MinY = MaxY = "0.00000000" + number_markers = len(place_lat_long) + if number_markers > 3: - # sort on Y coordinates to get min and max Y GPS Coordinates - place_lat_long = sorted(place_lat_long, key = operator.itemgetter(1, 0, 2)) - BoundMinY = place_lat_long[0][1] - BoundMaxY = place_lat_long[-1][1] - MinYint = int(Decimal(BoundMinY)) - MaxYint = int(Decimal(BoundMaxY)) - spanY = (MaxYint - MinYint) + # sort on X coordinates to get min and max X GPS Coordinates + place_lat_long = sorted(place_lat_long, key = operator.itemgetter(0, 1, 2)) + MinX = place_lat_long[0][0] + MaxX = place_lat_long[-1][0] + + # sort on Y coordinates to get min and max Y GPS Coordinates + place_lat_long = sorted(place_lat_long, key = operator.itemgetter(1, 0, 2)) + YCoordinates = place_lat_long + MinY = place_lat_long[-1][1] + MaxY = place_lat_long[0][1] + + # create span widths + spanX = Decimal(Decimal(MaxX) - Decimal(MinX)) + spanY = Decimal(Decimal(MaxY) - Decimal(MinY)) # sort place_lat_long based on chronological date order place_lat_long = sorted(place_lat_long, key = operator.itemgetter(4, 2, 0)) @@ -3939,28 +3947,14 @@ class IndividualPage(BasePage): url = self.report.build_url_fname(fname, None, self.up) head += Html("script", src = url, inline = True) - # set map dimensions based on width of Y Coordinates + # set map dimensions based on span of Y Coordinates if (-20 <= spanY > -1) or (20 <= spanY > 1): - head += """ - """ + map_size = "smallYmap" else: - head += """ - """ + map_size = "largeYmap" # begin familymap division - with Html("div", class_ = "content", id = "mapbody") as mapbody: + with Html("div", class_ = "content", id = map_size) as mapbody: body += mapbody # page message @@ -3972,8 +3966,13 @@ class IndividualPage(BasePage): "on the place’s name will take you to that place’s page.") mapbody += Html("p", msg, id = "description") + if (-20 <= spanX > -1) or (20 <= spanX > 1): + middlesection = "smallXMap" + else: + middlesection = "largeXMap" + # begin middle section division - with Html("div", id = "middlesection") as middlesection: + with Html("div", id = middlesection) as middlesection: mapbody += middlesection # begin inline javascript code @@ -3981,68 +3980,51 @@ class IndividualPage(BasePage): with Html("script", type = "text/javascript") as jsc: middlesection += jsc - jsc += """ - var map; - var latlon; - var coordinates = [] + jsc += javascript_header - function initialize() { - - // create map object - map = new mxn.Mapstraction('familygooglev3', 'googlev3'); - - // add map controls to image - map.addControls({ - pan: true, - zoom: 'large', - scale: true, - disableDoubleClickZoom: true, - keyboardShortcuts: true, - scrollwheel: false, - map_type: true - });""" index = 0 for (lat, long, p, h, d) in place_lat_long: j = index + 1 - jsc += """ - // Place name: %s - add_marker(%d, %s, %s);""" % ( p, j, lat, long ) + jsc += """ add_markers(%d, %s, %s, "%s");""" % ( j, lat, long, p ) index += 1 - jsc += """ - }""" - - if len(place_lat_long) > 6: - jsc += """ - // boundary southWest equals bottom left GPS Coordinates - var southWest = new mxn.LatLonPoint(%s, %s);""" % (BoundMinX, BoundMinY) - jsc += """ - // boundary northEast equals top right GPS Coordinates - var northEast = new mxn.LatLonPoint(%s, %s);""" % (BoundMaxX, BoundMaxY) - jsc += """ - var bounds = new google.maps.LatLngBounds(southWest, northEast); - map.fitBounds(bounds);""" - jsc += """ - function add_marker(num, latitude, longitude) { + }""" - var marker; + if (-20 <= spanY > -1) or (20 <= spanY > 1): + pass - // create latitude/ longitude point for marker - latlon = new mxn.LatLonPoint(latitude, longitude); + else: + # set southWest and northEast boundaries as spanY is greater than 20 + jsc += """ + // boundary southWest equals bottom left GPS Coordinates + var southWest = new mxn.LatLonPoint(%s, %s);""" % (MinX, MinY) + jsc += """ + // boundary northEast equals top right GPS Coordinates + var northEast = new mxn.LatLonPoint(%s, %s);""" % (MaxX, MaxY) + jsc += """ + var bounds = new google.maps.LatLngBounds(southWest, northEast); + map.fitBounds(bounds);""" - // create marker - marker = new mxn.Marker(latlon); + # include add_markers function + jsc += """ + function add_markers(num, latitude, longitude, title) { - // add number to individual markers - marker.setLabel(num.toString()); + latlon = new mxn.LatLonPoint(latitude, longitude); - // add marker to map - map.addMarker(marker, true); + var marker = new mxn.Marker(latlon); - // set Center and Zoom - map.setCenterAndZoom(latlon, 6); - }""" + marker.setInfoBubble(title); + + map.addMarker(marker, true);""" + + if (-20 <= spanY > -1) or (20 <= spanY > 1): + jsc += """ var zoomlevel = 6;""" + else: + jsc += """ var zoomlevel = 8;""" + jsc += """ + map.setCenterAndZoom(latlon, zoomlevel); + }""" # there is no need to add an ending "", # as it will be added automatically!