- Timestamp:
- 2019-05-31T20:02:40+12:00 (5 years ago)
- Location:
- main/trunk
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
main/trunk/greenstone2/perllib/doc.pm
r32590 r33125 42 42 ##use hashdoc; 43 43 use docprint; 44 use JSON; 45 46 # We just need pi from the Trig lib 47 # Import constants pi2, pip2, pip4 (2*pi, pi/2, pi/4). 48 use Math::Trig ':pi'; 44 49 45 50 # the document type may be indexed_doc, nonindexed_doc, or … … 1129 1134 1130 1135 #Only add the metadata if it has not already been added 1131 my $metaMap = $self->get_metadata_hashmap($section); 1136 my $metaMap = $self->get_metadata_hashmap($section); ### TODO: metaMap not used. Unnecesssary step? (Called function has no side-effects.) 1132 1137 } 1133 1138 } 1134 1139 1140 elsif($field eq "GPS.mapOverlay") { # then the value is a JSON string 1141 print STDERR "GPS.mapOverlay before val: " . $value . "\n"; 1142 1143 # TODO html decode? 1144 $value =~ s@[@[@g; 1145 $value =~ s@]@]@g; 1146 $value =~ s@"@"@g; 1147 print STDERR "GPS.mapOverlay after val: " . $value . "\n"; 1148 1149 my $json_array = decode_json $value; 1150 #my $json = JSON->new->allow_nonref; 1151 #&printAllShapes($json, $json_array); 1152 1153 foreach my $shape (@$json_array) { 1154 1155 my $type = $shape->{"type"}; 1156 print STDERR "Type : " . $type . "\n"; 1157 1158 if($type eq "circle") { 1159 #print STDERR "Found a circle:\n" . &printShape($json, $shape); 1160 1161 # work out bounding box 1162 # SCARY! 1163 # want the inverse of this useful page: 1164 # https://stackoverflow.com/questions/639695/how-to-convert-latitude-or-longitude-to-meters 1165 # https://www.geodatasource.com/developers/javascript 1166 1167 1168 # for now, just process the circle centre 1169 #my $centre = $shape->{"center"}; 1170 #$self->processLatOrLng($section_ptr, "Latitude", $centre->{"lat"}); 1171 #$self->processLatOrLng($section_ptr, "Longitude", $centre->{"lng"}); 1172 1173 1174 # Dr Bainbridge wants us to use: https://gis.stackexchange.com/questions/5821/calculating-latitude-longitude-x-miles-from-point 1175 # But we're using the rule of thumb here, since for N,E,S,W it works out the same: 1176 # https://gis.stackexchange.com/questions/2951/algorithm-for-offsetting-a-latitude-longitude-by-some-amount-of-meters 1177 # which states 1178 # "If your displacements aren't too great (less than a few kilometers) and you're not right at the poles, 1179 # use the quick and dirty estimate that 111,111 meters (111.111 km) in the y direction is 1 degree 1180 # (of latitude) and 111,111 * cos(latitude) meters in the x direction is 1 degree (of longitude)." 1181 my $centre_lat = $shape->{"center"}->{"lat"}; 1182 my $centre_lng = $shape->{"center"}->{"lng"}; 1183 my $radius = $shape->{"radius"}; # in metres! 1184 1185 print STDERR "@@@ circle centre: ($centre_lat, $centre_lng), radius: $radius\n"; 1186 1187 my $lat_north = $centre_lat + ($radius/111111); 1188 my $lat_south = $centre_lat - ($radius/111111); 1189 1190 print STDERR "### lat_north: $lat_north\n"; 1191 print STDERR "### lat_south: $lat_south\n"; 1192 1193 # our latitude and longitude values are in degrees. But cos and sin etc in perl and generally all prog languages 1194 # all expect their angle to be in radians. So need to convert from degree to radians before we can take the cose of it. 1195 my $centre_lat_radians = $self->degreesToRadians($centre_lat); 1196 my $cos_in_radians = cos($centre_lat_radians); 1197 print STDERR "cos $centre_lat_radians " . cos($centre_lat_radians) . "\n"; 1198 my $lng_east = $centre_lng + ($radius/(111111 * $cos_in_radians)); 1199 my $lng_west = $centre_lng - ($radius/(111111 * $cos_in_radians)); 1200 print STDERR "### lng_east $lng_east\n"; 1201 print STDERR "### lng_west $lng_west\n"; 1202 1203 1204 1205 my $cos_lat = cos($centre_lat); 1206 print STDERR "cos $centre_lat is $cos_lat\n"; 1207 1208 $self->processCoordinate($section_ptr, $lat_north, $lng_east); 1209 $self->processCoordinate($section_ptr, $lat_south, $lng_east); 1210 $self->processCoordinate($section_ptr, $lat_south, $lng_west); 1211 $self->processCoordinate($section_ptr, $lat_north, $lng_west); 1212 1213 } 1214 elsif ($type eq "marker") { 1215 print STDERR "@@ MARKER FOUND WITH LAT: " . $shape->{"position"}->{"lat"} . "\n"; 1216 print STDERR "@@ MARKER FOUND WITH LNG: " . $shape->{"position"}->{"lng"} . "\n"; 1217 $self->processCoordinate($section_ptr, $shape->{"position"}->{"lat"}, $shape->{"position"}->{"lng"}); 1218 } 1219 elsif ($type eq "polyline" || $type eq "polygon") { 1220 my $path_array = $shape->{"path"}; 1221 foreach my $position (@$path_array) { 1222 $self->processCoordinate($section_ptr, $position->{"lat"}, $position->{"lng"}); 1223 } 1224 } 1225 elsif ($type eq "rectangle") { 1226 1227 my $bounds = $shape->{"bounds"}; 1228 1229 $self->processCoordinate($section_ptr, $bounds->{"north"}, $bounds->{"east"}); 1230 $self->processCoordinate($section_ptr, $bounds->{"south"}, $bounds->{"east"}); 1231 $self->processCoordinate($section_ptr, $bounds->{"south"}, $bounds->{"west"}); 1232 $self->processCoordinate($section_ptr, $bounds->{"north"}, $bounds->{"west"}); 1233 } 1234 1235 } # end for on each shape in GPS.mapOverlay 1236 1237 } # end GPS.mapOverlay meta 1238 1135 1239 push (@{$section_ptr->{'metadata'}}, [$field, $value]); 1240 } 1241 1242 # https://en.wikipedia.org/wiki/Radian 1243 sub degreesToRadians 1244 { 1245 my $self = shift (@_); 1246 my ($degrees) = @_; 1247 1248 return $degrees * pi /180; # returns radians 1249 } 1250 1251 sub radiansToDegrees 1252 { 1253 my $self = shift (@_); 1254 my ($radians) = @_; 1255 1256 return $radians * 180 / pi; # returns degrees 1257 } 1258 1259 sub printAllShapes { 1260 my ($json, $json_array) = @_; 1261 1262 1263 #my $pretty_print_shape = $json->pretty->encode( $json_array->[0] ); 1264 foreach my $shape (@$json_array) { 1265 my $pretty_print_shape = $json->pretty->encode( $shape ); 1266 print STDERR "Shape: $pretty_print_shape\n"; 1267 #&printShape($shape); 1268 } 1269 1270 } 1271 1272 sub processCoordinate { 1273 my $self = shift (@_); 1274 my ($section_ptr, $latitude, $longitude) = @_; 1275 1276 my $lat_direction = ($latitude =~ m/^-/) ? "S" : "N"; 1277 my $lng_direction = ($longitude =~ m/^-/) ? "W" : "E"; 1278 1279 # have to store (lat, lng) in pairs, when there are so many coords to store 1280 #push (@{$section_ptr->{'metadata'}}, ["Latitude", $latitude]); 1281 #push (@{$section_ptr->{'metadata'}}, ["Longitude", $longitude]); 1282 1283 push (@{$section_ptr->{'metadata'}}, ["Coordinate", "$latitude $longitude"]); # "$latitude$lat_direction $longitude$lng_direction" 1284 1285 my ($latBeforeDec, $latAfterDec); 1286 my ($lngBeforeDec, $lngAfterDec); 1287 1288 if($latitude !~ m/\./) { 1289 $latBeforeDec = $latitude; 1290 $latAfterDec = ""; 1291 } else { 1292 ($latBeforeDec, $latAfterDec) = ($latitude =~ m/^-?([0-9]+)\.([0-9]+)$/); 1293 } 1294 if($longitude !~ m/\./) { 1295 $lngBeforeDec = $longitude; 1296 $lngAfterDec = ""; 1297 } else { 1298 ($lngBeforeDec, $lngAfterDec) = ($longitude =~ m/^-?([0-9]+)\.([0-9]+)$/); 1299 } 1300 1301 #if(defined $beforeDec && defined $afterDec) 1302 #{ 1303 my $name = "CoordShort"; 1304 push (@{$section_ptr->{'metadata'}}, [$name, "$latBeforeDec$lat_direction $lngBeforeDec$lng_direction"]); 1305 1306 for(my $i = 2; $i <= 4; $i++) 1307 { 1308 my $latDecPlaces = (length($latAfterDec) >= $i) ? substr($latAfterDec, 0, $i) : ""; 1309 my $lngDecPlaces = (length($lngAfterDec) >= $i) ? substr($lngAfterDec, 0, $i) : ""; 1310 1311 push (@{$section_ptr->{'metadata'}}, [$name, 1312 $latBeforeDec . $lat_direction. $latDecPlaces . " " . $lngBeforeDec . $lng_direction. $lngDecPlaces]); 1313 1314 } 1315 1316 #Only add the metadata if it has not already been added 1317 #my $metaMap = $self->get_metadata_hashmap($section); ### TODO: metaMap not used. Unnecesssary step? (Called function has no side-effects.) 1318 #} 1319 1320 1136 1321 } 1137 1322 -
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.