Index: /main/trunk/greenstone3/web/interfaces/default/js/map-scripts.js
===================================================================
--- /main/trunk/greenstone3/web/interfaces/default/js/map-scripts.js	(revision 33147)
+++ /main/trunk/greenstone3/web/interfaces/default/js/map-scripts.js	(revision 33148)
@@ -373,4 +373,5 @@
 }
 
+// TODO: FUNCTION DUPLICATED IN panoramaViewer.js
 function getLatLngForCoord(coord) {
 	
Index: /main/trunk/greenstone3/web/interfaces/default/js/panoramaViewer.js
===================================================================
--- /main/trunk/greenstone3/web/interfaces/default/js/panoramaViewer.js	(revision 33147)
+++ /main/trunk/greenstone3/web/interfaces/default/js/panoramaViewer.js	(revision 33148)
@@ -212,9 +212,21 @@
     panoDocList.ids.move(panoDocList.ids.indexOf(panoramaID), 0);
 
-    var startPanoLonLat = new THREE.Vector3(gs.documentMetadata[panoramaID].Latitude,gs.documentMetadata[panoramaID].Longitude);
+    var startPanoLonLat;
+	if(typeof gs.documentMetadata[panoramaID].Coordinate !== 'undefined'){ // we have Coordinate meta
+		var coordInfo = getLatLngForCoord(gs.documentMetadata[panoramaID].Coordinate);
+		startPanoLonLat = new THREE.Vector3(coordInfo.lat,coordInfo.lng);
+	} else {
+		startPanoLonLat = new THREE.Vector3(gs.documentMetadata[panoramaID].Latitude,gs.documentMetadata[panoramaID].Longitude);
+	}
 
     // going through the panolist checking the distance
     for(var i = 1; i < panoDocList.ids.length; i++) {
-	var endPanoLonLat = new THREE.Vector3(gs.documentMetadata[panoDocList.ids[i]].Latitude,gs.documentMetadata[panoDocList.ids[i]].Longitude);
+	var endPanoLonLat;
+	if(typeof gs.documentMetadata[panoDocList.ids[i]].Coordinate !== 'undefined'){ // we have Coordinate meta
+		var coordInfo = getLatLngForCoord(gs.documentMetadata[panoDocList.ids[i]].Coordinate);
+		endPanoLonLat = new THREE.Vector3(coordInfo.lat,coordInfo.lng);
+	} else {
+		endPanoLonLat = new THREE.Vector3(gs.documentMetadata[panoDocList.ids[i]].Latitude,gs.documentMetadata[panoDocList.ids[i]].Longitude);
+	}
 	if(calculateDistance(startPanoLonLat,endPanoLonLat) < panoSelectionRadius) {
 	    var bearing = calculateBearing(startPanoLonLat,endPanoLonLat); 
@@ -235,6 +247,27 @@
     }
     
-} 
-
+}
+
+// DUPLICATED FROM map-scripts.js
+function getLatLngForCoord(coord) {
+	
+	// https://stackoverflow.com/questions/2559318/how-to-check-for-an-undefined-or-null-variable-in-javascript
+	if(!coord) {
+		 // some_variable is either null, undefined, 0, NaN, false, or an empty string
+		console.log("@@@@ In panoramaViewer::getLatLngForCoord(): no or invalid coord info");
+		return null;
+	}
+	
+	// coord is of the form: "37S77 157E53"
+	// lat will be 37S77, lng 157E53.
+	var indexOfSpace = coord.indexOf(" ");
+	if(indexOfSpace === -1) {
+		console.log("@@@@ In panoramaViewer::getLatLngForCoord(): bad format for coord  " + coord);
+		return null;
+	}
+	var latitude = coord.substring(0, indexOfSpace);
+	var longitude = coord.substring(indexOfSpace+1);
+	return {lat: latitude, lng: longitude}; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Working_with_Objects
+}
 
 function onWindowResize() {
Index: /main/trunk/greenstone3/web/interfaces/default/transform/pages/classifier.xsl
===================================================================
--- /main/trunk/greenstone3/web/interfaces/default/transform/pages/classifier.xsl	(revision 33147)
+++ /main/trunk/greenstone3/web/interfaces/default/transform/pages/classifier.xsl	(revision 33148)
@@ -305,7 +305,6 @@
     </xsl:if>
 
-	<!-- TODO: anything equivalent for Coordinate metadata? -->
     <xsl:if test="/page/pageResponse/format/gsf:option[@name='panoramaViewerEnabled']/@value = 'true'">
-      <xsl:if test=" metadataList/metadata[@name = 'Latitude'] and metadataList/metadata[@name = 'Longitude'] and metadataList/metadata[@name = 'PhotoType']='Panorama'">
+      <xsl:if test="metadataList/metadata[@name = 'PhotoType']='Panorama' and ( metadataList/metadata[@name = 'Coordinate'] or ( metadataList/metadata[@name = 'Latitude'] and metadataList/metadata[@name = 'Longitude']))">
 	<xsl:call-template name="panoramaViewerFeaturesIcon"/>
       </xsl:if>
Index: /main/trunk/greenstone3/web/interfaces/default/transform/pages/query.xsl
===================================================================
--- /main/trunk/greenstone3/web/interfaces/default/transform/pages/query.xsl	(revision 33147)
+++ /main/trunk/greenstone3/web/interfaces/default/transform/pages/query.xsl	(revision 33148)
@@ -653,5 +653,5 @@
 
 		<xsl:if test="/page/pageResponse/format/gsf:option[@name='panoramaViewerEnabled']/@value = 'true'">
-		  <xsl:if test=" metadataList/metadata[@name = 'Latitude'] and metadataList/metadata[@name = 'Longitude']">
+		  <xsl:if test=" metadataList/metadata[@name = 'Coordinate'] or ( metadataList/metadata[@name = 'Latitude'] and metadataList/metadata[@name = 'Longitude'])">
                     <xsl:call-template name="panoramaViewerFeaturesIcon"/>
                   </xsl:if>
Index: /main/trunk/greenstone3/web/interfaces/default/transform/panorama-viewer-tools.xsl
===================================================================
--- /main/trunk/greenstone3/web/interfaces/default/transform/panorama-viewer-tools.xsl	(revision 33147)
+++ /main/trunk/greenstone3/web/interfaces/default/transform/panorama-viewer-tools.xsl	(revision 33148)
@@ -12,10 +12,25 @@
       <xsl:text>[</xsl:text>
       <xsl:for-each select="//documentNode">
-	<xsl:if test="metadataList/metadata[@name = 'Latitude'] and metadataList/metadata[@name = 'Longitude'] and metadataList/metadata[@name = 'PhotoType']='Panorama'">
+	<xsl:if test="metadataList/metadata[@name = 'PhotoType']='Panorama' and (metadataList/metadata[@name = 'Coordinate'] or (metadataList/metadata[@name = 'Latitude'] and metadataList/metadata[@name = 'Longitude']))">
 	  <xsl:text>{</xsl:text>
 	  <xsl:text disable-output-escaping="yes">"nodeID":"</xsl:text><xsl:value-of select="@nodeID"/><xsl:text disable-output-escaping="yes">",</xsl:text>
-	  <xsl:text disable-output-escaping="yes">"source":"</xsl:text><xsl:value-of disable-output-escaping="yes" select="metadataList/metadata[@name = 'Source']"/>"<xsl:text>,</xsl:text>
-	  <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>
-	  <xsl:text disable-output-escaping="yes">"lng":</xsl:text><xsl:value-of disable-output-escaping="yes" select="metadataList/metadata[@name = 'Longitude']"/>
+	  <xsl:text disable-output-escaping="yes">"source":"</xsl:text><xsl:value-of disable-output-escaping="yes" select="metadataList/metadata[@name = 'Source']"/>"
+	  <xsl:if test="metadataList/metadata[@name = 'Latitude'] and metadataList/metadata[@name = 'Longitude']">
+		<xsl:text disable-output-escaping="yes">,</xsl:text>
+		<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>
+		<xsl:text disable-output-escaping="yes">"lng":</xsl:text><xsl:value-of disable-output-escaping="yes" select="metadataList/metadata[@name = 'Longitude']"/>
+      </xsl:if>
+	  <xsl:if test="metadataList/metadata[@name = 'Coordinate']">
+		<xsl:text disable-output-escaping="yes">,</xsl:text>
+		<xsl:text disable-output-escaping="yes">"coords":</xsl:text>
+		<xsl:text>[</xsl:text>
+		<xsl:for-each select="metadataList/metadata[@name = 'Coordinate']">
+			<xsl:text disable-output-escaping="yes">"</xsl:text>
+			<xsl:value-of disable-output-escaping="yes" select="current()"/>
+			<xsl:text disable-output-escaping="yes">"</xsl:text>			
+			<xsl:text disable-output-escaping="yes">,</xsl:text>
+		</xsl:for-each>
+		<xsl:text>]</xsl:text>
+	  </xsl:if>	
 	  <xsl:text>}</xsl:text>
 	  <xsl:if test="not(position() = count(//documentNode))">
@@ -29,4 +44,5 @@
     <gsf:metadata name="Latitude" hidden="true"/>
     <gsf:metadata name="Longitude" hidden="true"/>
+	<gsf:metadata name="Coordinate" hidden="true"/>
     <gsf:metadata name="Image" hidden="true"/>
     <gsf:metadata name="SourceFile" hidden="true"/>
