Changeset 33125 for main/trunk/greenstone3
- Timestamp:
- 2019-05-31T20:02:40+12:00 (5 years ago)
- Location:
- main/trunk/greenstone3/web/interfaces/default
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
main/trunk/greenstone3/web/interfaces/default/js/map-scripts.js
r32833 r33125 24 24 if(jsonNodeDiv.length) 25 25 { 26 console.log("@@@ JSON node div html: " + jsonNodeDiv.html()); 27 26 28 var jsonNodes = eval(jsonNodeDiv.html()); 27 29 if(jsonNodes && jsonNodes.length > 0) … … 31 33 _docList[jsonNodes[i].nodeID] = jsonNodes[i]; 32 34 _docList.ids.push(jsonNodes[i].nodeID); 35 console.log("@@@ JSON node: " + jsonNodes[i]); 33 36 createMarker(jsonNodes[i], true); 34 37 } … … 39 42 //$("#map_canvas").css({visibility:"hidden", height:"0px"}); 40 43 $("#map_canvas").css({visibility:"hidden"}); 44 //console.log("suppressing hiding the map"); 41 45 } 42 46 } … … 82 86 function setUpMap() 83 87 { 84 88 //alert("@@@@in map-scripts::setUpMap()"); 85 89 86 90 var myOptions = … … 93 97 94 98 if ($map_canvas.length > 0) { 99 console.log("### map-scripts::setUpMap: map_canvas.exists"); 95 100 _map = new google.maps.Map($map_canvas[0], myOptions); 96 101 google.maps.event.addListener(_map, 'bounds_changed', performSearchForMarkers); … … 104 109 return; 105 110 } 111 112 106 113 107 114 _searchRunning = true; … … 145 152 if(lngDelta == 0.1){lngDelta = 1; lngPrecision = 0; } 146 153 154 /* 147 155 var query = ""; 148 156 for(var i = 0; i <= Math.floor(latDistance / latDelta) + 1; i++) … … 183 191 } 184 192 } 193 */ 194 var query = ""; 195 var iMax = Math.floor(latDistance / latDelta) + 1; 196 var jMax = Math.floor(lngDistance / lngDelta) + 1;; 197 for(var i = 0; i <= iMax; i++) //for(var i = 0; i <= Math.floor(latDistance / latDelta) + 1; i++) 198 { 199 for(var j = 0; j <= jMax; j++) //for(var j = 0; j <= Math.floor(lngDistance / lngDelta) + 1; j++) 200 { 201 //Some necessary variables 202 var newLat = neLat - (latDelta * i); 203 var newLatString = "" + newLat; 204 var newLatTrunc; 205 if(newLat < 0){newLatTrunc = Math.ceil(newLat);} 206 else{newLatTrunc = Math.floor(newLat);} 207 208 var newLng = neLng - (lngDelta * j); 209 var newLngString = "" + newLng; 210 var newLngTrunc; 211 if(newLng < 0){newLngTrunc = Math.ceil(newLng);} 212 else{newLngTrunc = Math.floor(newLng);} 213 214 //Construct query 215 query += "("; 216 query += "CS:\"" + coordToAbsDirected(newLatTrunc, "lat"); 217 //query += "CS:\"" + coordToAbsDirected(newLatTrunc, "lat") + "\" \"" + coordToAbsDirected(newLngTrunc, "lng") + "\""; //query += "LA:" + coordToAbsDirected(newLatTrunc, "lat"); 218 if(latDelta != 1) 219 { 220 query += newLatString.substring(newLatString.indexOf(".") + 1, newLatString.indexOf(".") + latPrecision + 1); 221 } 222 query += " "; 223 //query += "+AND+"; 224 225 //query += "LN:" + coordToAbsDirected(newLngTrunc, "lng"); 226 query += coordToAbsDirected(newLngTrunc, "lng"); 227 if(lngDelta != 1) 228 { 229 query += newLngString.substring(newLngString.indexOf(".") + 1, newLngString.indexOf(".") + lngPrecision + 1); 230 } 231 query += "\""; 232 query += ")"; 233 234 //if(i != (Math.floor(latDistance / latDelta) + 1) || j != (Math.floor(lngDistance / lngDelta) + 1)){ query += "+OR+"; } 235 if(i != iMax || j != jMax){ query += "+OR+"; } 236 } 237 } 238 239 // This works, why not from the double loop above? 240 //query = "(CS:\"" + coordToAbsDirected(newLatTrunc, "lat") + " " + coordToAbsDirected(newLngTrunc, "lng") + "\")"; 241 //alert("@@@@in map-scripts::performSearchForMarkers() - query: " + query); 185 242 186 243 //var url = gs.xsltParams.library_name + "?a=q&s=RawQuery&rt=rd&c=" + gs.cgiParams.c + "&s1.rawquery=" + query + "&excerptid=jsonNodes"; … … 196 253 var startIndex = responseText.indexOf(">"); 197 254 var endIndex = responseText.indexOf("</"); 255 256 console.log("@@@@ performSearch, got response: " + responseText); 198 257 199 258 var jsonNodes = eval(responseText.substring(startIndex+1, endIndex)); … … 278 337 } 279 338 339 if(!doc.lat) { 340 var coordInfo = getLatLngForCoord(doc.coord); 341 bounds.extend(new google.maps.LatLng(coordInfo.lat, coordInfo.lng)); 342 } 343 else { 280 344 bounds.extend(new google.maps.LatLng(doc.lat, doc.lng)); 345 } 281 346 } 282 347 … … 291 356 } 292 357 358 function getLatLngForCoord(coord) { 359 360 // https://stackoverflow.com/questions/2559318/how-to-check-for-an-undefined-or-null-variable-in-javascript 361 if(!coord) { 362 // some_variable is either null, undefined, 0, NaN, false, or an empty string 363 console.log("@@@@ In map-scripts::getLatLngForCoord(): no or invalid coord info"); 364 return null; 365 } 366 367 // coord is of the form: "37S77 157E53" 368 // lat will be 37S77, lng 157E53. 369 var indexOfSpace = coord.indexOf(" "); 370 if(indexOfSpace === -1) { 371 console.log("@@@@ In map-scripts::getLatLngForCoord(): bad format for coord " + coord); 372 return null; 373 } 374 var latitude = coord.substring(0, indexOfSpace); 375 var longitude = coord.substring(indexOfSpace+1); 376 return {lat: latitude, lng: longitude}; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Working_with_Objects 377 } 378 293 379 function loopThroughMarkers() 294 380 { … … 363 449 gs.functions.setArchivesMetadata(collection, site_name, nodeID, "Latitude", null, lat, null, "override", function(){callbackFunction();}); 364 450 gs.functions.setArchivesMetadata(collection, site_name, nodeID, "Longitude", null, lng, null, "override", function(){callbackFunction();}); 451 gs.functions.setArchivesMetadata(collection, site_name, nodeID, "Coordinate", null, lat + " " + lng, null, "override", function(){callbackFunction();}); 365 452 console.log("NodeID: " + nodeID); 366 453 console.log("GPS Click handler in collection:" + collection + " in site: " + site_name + " for Doc: " + nodeID + "(" + lat + "," + lng + ")"); … … 376 463 clearInterval(_intervalHandle); 377 464 _intervalHandle = null; 378 _map.panTo(new google.maps.LatLng(doc.lat, doc.lng)); 465 if(!doc.lat) { 466 var coordInfo = getLatLngForCoord(doc.coord); 467 _map.panTo(new google.maps.LatLng(coordInfo.lat, coordInfo.lng)); 468 } else { 469 _map.panTo(new google.maps.LatLng(doc.lat, doc.lng)); 470 } 379 471 clearAllInfoBoxes(); 380 472 doc.marker.markerInfo.open(_map, doc.marker); … … 398 490 function createMarker(doc, mainMarker) 399 491 { 400 var pos = new google.maps.LatLng(doc.lat,doc.lng); 492 var pos; 493 if(doc.lat) { 494 pos = new google.maps.LatLng(doc.lat,doc.lng); 495 } else { 496 var coordInfo = getLatLngForCoord(doc.coord); 497 pos = new google.maps.LatLng(coordInfo.lat,coordInfo.lng); 498 } 499 401 500 402 501 var docEdit = (("docEdit" in gs.cgiParams) && (gs.cgiParams['docEdit'])); … … 525 624 } 526 625 626 function performDistanceSearchWithCoordinates(id, coord, degrees) 627 { 628 var coordInfo = getLatLngForCoord(doc.coord); 629 if(!coordInfo) { 630 console.log("@@@ ERROR in map-scripts::performDistanceSearchWithCoordinates: coordInfo is null"); 631 } 632 performDistanceSearch(id, coordInfo.lat, coordInfo.lng, degrees); 633 } 634 527 635 function performDistanceSearch(id, lat, lng, degrees) 528 636 { -
main/trunk/greenstone3/web/interfaces/default/transform/map-tools.xsl
r31550 r33125 12 12 <td style="padding-left:5px; padding-right:5px;" valign="top"> 13 13 <a href="javascript:focusDocument('{@nodeID}');"> 14 <img src="interfaces/ default/images/map_marker.png"/>14 <img src="interfaces/{$interface_name}/images/map_marker.png"/> 15 15 </a> 16 16 </td> … … 21 21 <xsl:text>[</xsl:text> 22 22 <xsl:for-each select="//documentNode"> 23 <xsl:if test=" metadataList/metadata[@name = 'Latitude'] and metadataList/metadata[@name = 'Longitude']">23 <xsl:if test="(metadataList/metadata[@name = 'Latitude'] and metadataList/metadata[@name = 'Longitude']) or metadataList/metadata[@name = 'Coordinate']"> 24 24 <xsl:text>{</xsl:text> 25 25 <xsl:text disable-output-escaping="yes">"nodeID":"</xsl:text> … … 29 29 <xsl:value-of disable-output-escaping="yes" select="metadataList/metadata[@name = 'Title']"/> 30 30 <xsl:text disable-output-escaping="yes">",</xsl:text> 31 <xsl:text disable-output-escaping="yes">"lat":</xsl:text> 32 <xsl:value-of disable-output-escaping="yes" select="metadataList/metadata[@name = 'Latitude']"/> 33 <xsl:text>,</xsl:text> 34 <xsl:text disable-output-escaping="yes">"lng":</xsl:text> 35 <xsl:value-of disable-output-escaping="yes" select="metadataList/metadata[@name = 'Longitude']"/> 31 <xsl:if test="metadataList/metadata[@name = 'Latitude'] and metadataList/metadata[@name = 'Longitude']"> 32 <xsl:text disable-output-escaping="yes">"lat":</xsl:text> 33 <xsl:value-of disable-output-escaping="yes" select="metadataList/metadata[@name = 'Latitude']"/> 34 <xsl:text>,</xsl:text> 35 <xsl:text disable-output-escaping="yes">"lng":</xsl:text> 36 <xsl:value-of disable-output-escaping="yes" select="metadataList/metadata[@name = 'Longitude']"/> 37 </xsl:if> 38 <xsl:if test="metadataList/metadata[@name = 'Coordinate']"> 39 <xsl:text disable-output-escaping="yes">"coord":"</xsl:text> 40 <xsl:value-of disable-output-escaping="yes" select="metadataList/metadata[@name = 'Coordinate']"/> 41 <xsl:text disable-output-escaping="yes">"</xsl:text> 42 </xsl:if> 36 43 <xsl:text>}</xsl:text> 37 44 <xsl:if test="not(position() = count(//documentNode))"> … … 46 53 <gsf:metadata name="Latitude" hidden="true"/> 47 54 <gsf:metadata name="Longitude" hidden="true"/> 55 <gsf:metadata name="Coordinate" hidden="true"/> 56 <gsf:metadata name="GPS.mapOverlay" hidden="true"/> 48 57 <!-- these were included in version in query. don't think we need them... 49 58 <gsf:metadata name="Image" hidden="true"/> -
main/trunk/greenstone3/web/interfaces/default/transform/pages/classifier.xsl
r32626 r33125 300 300 <xsl:template name="documentNodePost"> 301 301 <xsl:if test="/page/pageResponse/format[@type='display' or @type='browse' or @type='search']/gsf:option[@name='mapEnabled']/@value = 'true'"> 302 <xsl:if test="metadataList/metadata[@name='Latitude' or @name='Longitude' ]">302 <xsl:if test="metadataList/metadata[@name='Latitude' or @name='Longitude' or @name='Coordinate']"> 303 303 <xsl:call-template name="mapFeaturesIcon"/> 304 304 </xsl:if> 305 305 </xsl:if> 306 306 307 307 <!-- TODO: anything equivalent for Coordinate metadata? --> 308 308 <xsl:if test="/page/pageResponse/format/gsf:option[@name='panoramaViewerEnabled']/@value = 'true'"> 309 309 <xsl:if test=" metadataList/metadata[@name = 'Latitude'] and metadataList/metadata[@name = 'Longitude'] and metadataList/metadata[@name = 'PhotoType']='Panorama'"> -
main/trunk/greenstone3/web/interfaces/default/transform/pages/document.xsl
r33095 r33125 844 844 <xsl:when test="count(//documentNode) > 0"> 845 845 <xsl:for-each select="//documentNode"> 846 <xsl:if test=" metadataList/metadata[@name = 'Latitude'] and metadataList/metadata[@name = 'Longitude']">846 <xsl:if test="(metadataList/metadata[@name = 'Latitude'] and metadataList/metadata[@name = 'Longitude']) or metadataList/metadata[@name = 'Coordinate']"> 847 847 <xsl:text>{</xsl:text> 848 848 <xsl:text disable-output-escaping="yes">"nodeID":"</xsl:text><xsl:value-of select="@nodeID"/><xsl:text disable-output-escaping="yes">",</xsl:text> 849 849 <xsl:text disable-output-escaping="yes">"title":"</xsl:text><xsl:value-of disable-output-escaping="yes" select="metadataList/metadata[@name = 'Title']"/><xsl:text disable-output-escaping="yes">",</xsl:text> 850 <xsl:text disable-output-escaping="yes">"lat":</xsl:text><xsl:value-of disable-output-escaping="yes" select="metadataList/metadata[@name = 'Latitude']"/><xsl:text>,</xsl:text> 851 <xsl:text disable-output-escaping="yes">"lng":</xsl:text><xsl:value-of disable-output-escaping="yes" select="metadataList/metadata[@name = 'Longitude']"/> 850 <xsl:if test="metadataList/metadata[@name = 'Latitude'] and metadataList/metadata[@name = 'Longitude']"> 851 <xsl:text disable-output-escaping="yes">"lat":</xsl:text><xsl:value-of disable-output-escaping="yes" select="metadataList/metadata[@name = 'Latitude']"/><xsl:text>,</xsl:text> 852 <xsl:text disable-output-escaping="yes">"lng":</xsl:text><xsl:value-of disable-output-escaping="yes" select="metadataList/metadata[@name = 'Longitude']"/> 853 </xsl:if> 854 <xsl:if test="metadataList/metadata[@name = 'Coordinate']"> 855 <xsl:text disable-output-escaping="yes">"coord":"</xsl:text><xsl:value-of disable-output-escaping="yes" select="metadataList/metadata[@name = 'Coordinate']"/> 856 <xsl:text disable-output-escaping="yes">"</xsl:text> 857 </xsl:if> 852 858 <xsl:text>}</xsl:text> 853 859 <xsl:if test="not(position() = count(//documentNode))"> … … 860 866 <xsl:otherwise> 861 867 <xsl:for-each select="/page/pageResponse/document"> 862 <xsl:if test=" metadataList/metadata[@name = 'Latitude'] and metadataList/metadata[@name = 'Longitude']">868 <xsl:if test="(metadataList/metadata[@name = 'Latitude'] and metadataList/metadata[@name = 'Longitude']) or metadataList/metadata[@name = 'Coordinate']"> 863 869 <xsl:text>{</xsl:text> 864 870 <xsl:text disable-output-escaping="yes">"nodeID":"</xsl:text><xsl:value-of select="@selectedNode"/><xsl:text disable-output-escaping="yes">",</xsl:text> 865 871 <xsl:text disable-output-escaping="yes">"title":"</xsl:text><xsl:value-of disable-output-escaping="yes" select="metadataList/metadata[@name = 'Title']"/><xsl:text disable-output-escaping="yes">",</xsl:text> 866 <xsl:text disable-output-escaping="yes">"lat":</xsl:text><xsl:value-of disable-output-escaping="yes" select="metadataList/metadata[@name = 'Latitude']"/><xsl:text>,</xsl:text> 867 <xsl:text disable-output-escaping="yes">"lng":</xsl:text><xsl:value-of disable-output-escaping="yes" select="metadataList/metadata[@name = 'Longitude']"/> 872 <xsl:if test="metadataList/metadata[@name = 'Latitude'] and metadataList/metadata[@name = 'Longitude']"> 873 <xsl:text disable-output-escaping="yes">"lat":</xsl:text><xsl:value-of disable-output-escaping="yes" select="metadataList/metadata[@name = 'Latitude']"/><xsl:text>,</xsl:text> 874 <xsl:text disable-output-escaping="yes">"lng":</xsl:text><xsl:value-of disable-output-escaping="yes" select="metadataList/metadata[@name = 'Longitude']"/> 875 </xsl:if> 876 <xsl:if test="metadataList/metadata[@name = 'Coordinate']"> 877 <xsl:text disable-output-escaping="yes">"coord":"</xsl:text><xsl:value-of disable-output-escaping="yes" select="metadataList/metadata[@name = 'Coordinate']"/> 878 <xsl:text disable-output-escaping="yes">"</xsl:text> 879 </xsl:if> 868 880 <xsl:text>}</xsl:text> 869 881 </xsl:if> … … 893 905 </div> 894 906 </xsl:if> 907 908 <xsl:if test="metadataList/metadata[@name = 'Coordinate']"> 909 <div style="background:#BBFFBB; padding: 5px; margin:0px auto; width:890px;"> 910 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'doc.map_nearby_docs')"/> 911 <img id="nearbyDocumentsToggle" style="margin-left:5px;" src="interfaces/{$interface_name}/images/expand.png"> 912 <xsl:attribute name="onclick"> 913 <xsl:text>performDistanceSearchWithCoordinates('</xsl:text> 914 <xsl:value-of select="@nodeID"/> 915 <xsl:text>', '</xsl:text> 916 <gsf:metadata name="Coordinate"/> 917 <xsl:text>', 2);</xsl:text> 918 </xsl:attribute> 919 </img> 920 <div id="nearbyDocuments"><xsl:text> </xsl:text></div> 921 </div> 922 </xsl:if> 895 923 </xsl:template> 896 924 </xsl:stylesheet>
Note:
See TracChangeset
for help on using the changeset viewer.