From ef1bc6635dac0c4a4c89b43b5c0feb594749c0ac Mon Sep 17 00:00:00 2001
From: Tor-Einar Skog <tor-einar.skog@bioforsk.no>
Date: Thu, 12 May 2016 14:22:10 +0200
Subject: [PATCH] Added view of locations, not just random GeoJSON

---
 .../static/observations/images/bug.png        | Bin 0 -> 6610 bytes
 .../static/observations/images/bug_medium.png | Bin 0 -> 3608 bytes
 .../observations/js/observationViewMap.js     | 120 +++++++++++-------
 .../templates/observations/detail.html        |  12 +-
 4 files changed, 86 insertions(+), 46 deletions(-)
 create mode 100644 observations/static/observations/images/bug.png
 create mode 100644 observations/static/observations/images/bug_medium.png

diff --git a/observations/static/observations/images/bug.png b/observations/static/observations/images/bug.png
new file mode 100644
index 0000000000000000000000000000000000000000..e7a48707ddd5728cd10d07889d46b64d67bbe85a
GIT binary patch
literal 6610
zcmeAS@N?(olHy`uVBq!ia0y~yU@!n-4mJh`hH$2z?F<Z@k26CeN+NuHtdjF{^%7I^
zlT!66atjzhz{b9!ATc>RwL~E)H9a%WR_Xoj{Yna%DYi=CroINg1<t7%nI2U|slio#
zA<0$Q$(AWf_I6x06;>6w1-Ypui3%0DIeEoa6}C!XbFK1<tw6&1N(x{lCE2!0jvxya
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
aXJ@E?`t(3pYT|y-RE(#qpUXO@geCwr^O3m#

literal 0
HcmV?d00001

diff --git a/observations/static/observations/images/bug_medium.png b/observations/static/observations/images/bug_medium.png
new file mode 100644
index 0000000000000000000000000000000000000000..07c546946090b01e75d5f79324498148468bf730
GIT binary patch
literal 3608
zcmeAS@N?(olHy`uVBq!ia0y~yV2}V|4mJh`h6m-gKNuLe{4<@M0|GMgOY(~|@(UC^
zot+g5it^Jkb5a=?DsIgUP7euwDQ5fq-WMnDj)p1T`9Y!_3PDcY4I&fOv=li7ygC#Y
z-V_ZyDCp|SB7I^(2XkLvLyu^n4o?@?4fZFBi~5=ucXXZl{jhp*_O(6VpPl`;^}5~j
zHJ|5hKF@xDgJ+tDaiD1f&q^mb!3WL9j~sjWM9-m-OQnE8fMautV)0*PMus1CHa6Ny
z2iW&9FjidV=3qGBJNtlvO#6TSS57ly7#ms`50p%_@aAX`VQ{GGb6UpW;KtZ6cZOOp
z!vYqDgwx4Mj~N1V84}d%pIv5XnEPX9H6ugx6h%?S1rr$*gi||Q7&5FG)|?OPa%G4x
zU=T_3K4QsmLzlt8Gd#_MVZ(NY1Lp*|H!*PVFc<`Ov}!W2R5K);P*$#BXqm|%;`S-r
z=A-sHf#+Hb3>7ms+3ZxYbZw00&@E&S57(2^IOi#@En=3)lsL;l?@;ATNux#+{s*7W
zFfc5bC@T1%`Sah3bA0R0oipp(#uu;qYCqe5rKF_C|DK*-UEsjL@UW!r;y)ez%~B24
zYz?{p7OB2t$%x}#Q2M<)Z4<x4R)z&HZ-sv@0ELa~!U;QX-hBGx$qla~PSJ^{!fXGf
zABsN^{x|1moz0)`Umxsyq|#^<+vv{n<H4abUwoFzoS($ml62=;zx$u<-2eZ`URFBd
znY1%POXP8&P+_0Tte($COO-mECTSj3z4Slj(S4oY%y#!p88&3uF;-91T@jni{LNck
zAfn{Jqwfq1pLXXTyrRLu+>p`y@O=6I_x69?7pO8cq<Ky%WMGJMQPB%Iwb}kS2Lpr4
zf<~<kj?!NaO6VM5lR3zG=OFi=1hW<=l_Q6o1e~~18f1zRG}kmaX|$c)Agh(2f5k!8
z<Un9X+vEa1y+ffp_-qUKe<gCvJE*azk(0&o1cz{<;;jzGq^=0%J`VAjtv?hGdawv}
zt0<i85D8TBo@nY}7}OP_5b7cO$+n2evOUIa*F@_R3`R|V+V;2`PHEf}XnTcctMkqk
z=29(gi?}bOlo-zH7h5p<LeUl}+a9xp&o8Xb;J?*x=X~7YzzYd><0Cl+ddChsZM4wg
zoSb}mqtY6l)yJeZgsoxT-T5{7{Kj$?p+?sOoMtTLP6~-~jvf&{5q>v3Rw&4*m<ZnD
zH0NY)2|T2(G<k*h7PVc1KaWTx85y=mc<3l!6Y3Y%7pU%VK4PvS)ah)bzH<VT=f))=
zmxM04UCIkmeyOu^wuy(7^5m1ZQnEL(TTanY&_2=nWbTv0PmG^PKT-S?%{4d4p>WBM
z;71xkr?R{xp9(xRdCHbL!^kmo@vNY`D;9<bn)XLItzEb+XnkP&3SpDdS(ay;#XP;2
zu3a?svQ&n6#`nziFG_X^-kmDvH~m8RrPD9nUrc|&{H2_Sw@tM9ct^U1<ZKCciFC<w
ziS;vlmPuajmOLI}U~c$&#`Br{GxI|uw6<y0h)z7kHPvgX+Ei&R{g9QbmaV$CiaYdk
z=;@IDm2ttf>)b+(gCDQtyfSTd=&HE^uY;w7(^p!rXkV4SB0t1_NnPaMPPWLyK8O9C
zmjo`@82@<BF$L~q$;}lyirKuY+e#ZvkEm@td$XoYYxj)5vb(!&SFK!V>1^y}9KJc|
z^OQ7u_Qx{{f6OWI<9x2MeER3Qu6rWyH6Lk8FEjDkX_y+5y=vO@X%VYERtK(jf4$di
z-P`4Jm+f`k9r?SF&+)jIdW^bzdjC1rxzB@d2H#!IwOq{C*6Qmzy;a#ur5EmYDc_&B
z{N0Rs`{Ekr`Q$IZSGo83FPU2Xzaf8fe=Yy&&J)45nMZ}~HqSW;o1><M`8Klp$8UcO
zbdEjj;Jh?(YU1>VEfaTMv{`)Bt=EmeC-Yd$W0l9b$8wJ?R%26BRP*+I<@;_{knhfA
zn#-(xtbLB3J#%)^*=sXRXWJTHH+nw%`Rwbn?{80ts)*9rwqo0kRL@OMqLxLz+qNgK
zHOew_X+&sL>}I#MbJwa~+r4)8a>3<0{U-aZo_8(%@P?1uPHtPdU2?<I8*I1NZOh$O
zo0y&?p1%F)y2I}#@10z`tG4&AEjw@fO}^E#QL=T#TZ%-i!mRGiIydK?eeKaN(_ZSQ
zN1PWpf5Z6kHsRBnM>6LI&%W%QE}p)#xcPHOcc*vLX}#%odb6dE-954QiC4+j!q|sZ
zm%h%Oy?OSbw<~V1e`oeC^IiL$`DaY#YtD-_F1~R1g!6;Irx)$H=T9}rzQ3l<-`T%0
zed}{&{bc=#;cKsN*uJ!U)%V2r;&$KcisnDIdu(HV&*)xc{2B8D+fQsi?SD9bUVQ6)
z=X&M;DgUefUu0O`pvsue+}Y^Z7|rziM^%mD{yuxF+o|6+-F)lVvtXyAsAGTA+NP%m
z*D7Y5cr#(G;`iq>&P_a*$=4cC_u|?G_QYq2-G}RV)LYwI!`tlp3OXXBE*efZEx&lj
zx%j@zFPCX9_hzRX`dhBo^)l76Tcwv}bIW{}$u9e2dTEhou13s_@XYa+vDDLAXO@?<
z@BW{+pW7eJeZ>8^T6~87iP(b5h35`^X<aV1Qcp<7YMO&jho8li4~_y_E5v$KKM9ws
z_Hk7nl0B5Jq<_)uV#f{V7%e%!PaaynRg>OK++$j)a@2UK&eNSO>MJMg@!|EkJKJiW
z*sL;zTq9eny@t(`CQc}HTBYbad0YCc^k->hr`M#mZu)mLuY0?`+*J0H*_$V<VU5(~
z+UB(EMM#v!buIQy>8asq`_FcsvYfVhp7z<dXEvX@J;8j=`}zOh3LO%9IBDC`Ht%p<
z*@$O**JN34vMH>*&GlH6Rl6;WZH>*2u5DVmSN&JN4WGWQZm(LEZ+2tc!Bb5Kw=!nG
z<__h0+FJYi&h@vk{t^0-_qQhgYMU!<C)(MyPUN=ubkX`78h0w5O1I~q+CTHolr1Y)
zAK965KJ8N4%V+m==SA~PTQ&XJbiO>^o42;`-VfXI_Ukv-+xpYbYTVx4yv=#%;{7%|
z_M|R9dG4&WeaMoKFCo7|%-&tPyEXCpkGzZTq^tLQGkJ6McJ!X_f9+20yB*3H>U%Zq
zYU*##-<!YNuj^d(^2fB_xv^{gatq%cXTHSzmtC1}+x4ASuF77r4GHSMrv2KT@3{QF
ze{<iL>++iMhW5@m_DH$FrSi$k@0|C)%kf&>D(k6U^N{_re3@*ztbUf$tWUGtW(Uvu
z9i0@t%m0ks#cQwbRsC_lEzdv4#3r)R>vPD-%v&#;E>BMXbiQZq)VZ~FdOz<Z++MV;
z`g!uX`&s<??{^85JiO%kzx%oM9_w>4pLUdd+I0J=aQKe!S?jIhb6=IbviUdpvj6ej
zb9T>Kw=*Vt=ew%CTdUK)zm%S5e(vs<y_Fxu{$IN~&(ikp-p^I}-;aL(dSC2rU6K0V
zbEkLTELVTGc8~v__%9A`9dA0{ZNF+C{qN3=_jl^E4wNtWeDRL^ced8%^ZzD(?dNx9
z?Vs6yx{bH(^*jqZOUp<0MSoxZS?+v3<-FQF@qdf{on9v{reF8t>g((0F3z~PaQdg|
zllSM=EdBfHz-!6%w~rk<Cb#cog|T7Wm$2V&50>94mwmtZKEMBy8ijg|{~13weht2`
z{P$$Z$&>%HFwgk>C)rr{HUk3#TavfC3&Vd9T(EcfWCjKX&H|6fVg?3oVGw3ym^BB~
z9Az)@^mS#w$0WhaE~vKTUMB+svzMofV~EG`xgp*i%Aq2*+qFWXHcX!0vh1bnalcg)
zd8Yk5>u0W&+$_y%|07cSR6|pbcDnIqVR7YV?fM5!ZUXEwtzt44B44;=%sRu9+<0le
z$;~gTb~*Co?yruC5KRi2npaaG{(j%@ca`7o70VSIdR4aj{TYkuMYrFUF)q0La>+4^
z$mzG=e%tA{+<8)e+R+uS-m943di%|P_UzdiTcegUXPC|Aon*dtYrxgRIt-KQj~Vux
z&OR$&wfA0#kKW_d^?kYWoJ|i{8K%2FITP_I``WE&C8kLN6V)#l`7*LNGKBt3KC_kU
z!Rjfy^_eSDbLywCDMUUsm+IZEA}=&?a>ay@4PtE%&jz1ea4|!H=deR)q1WyS(`r~A
z{QfuV{qM#5+7oA-d9)>L&GpwSuD@P<WZ!#xZU#LDiR66@1^Ys@VvUad5p}(&zk2m*
zzLOnGR=xVG^4v4&42OcsPt}Ik(b3V&$vyE}Q}1a{KYgFE;-W-xc-B^_ZQHkR+_dSF
z)X8oJIf03aCs#A9d;9L)y?IyvN3ER}el?w8kD^ll@y|ba5B#>aww~|ryCG_AnMWPd
zgEupFvp<kyn0-d{fKo#{qfW1c@+ZRv{$GFVW_Si?zg0UaEzGd?#w3>?+ntk3L=Gkx
zRMb{hR+@FQH8Xnr$~>&{Q}<-pntT6eY!&nN_FlSo@7~E%bJms`NA26Ve}8>-VPWB_
zriz_2tyY9+F*LNcwl=MrcXGjEVS9zORx7efZNwQYj?HlC^`CzFseI_yh9@^Uz4~+l
z-z_<+AU)M9wfRZ0;ophfi#U!ZeeBz6*3n)nd*HrG{HaCHK7K4*74KrF@>8v0eXpU{
zrdLPwe@%I^Td62s#Pxi1_WqypqF)wkRB=1>Jz))fJ5lBt!-EeWKD;{e{OjgbO0O3O
zUp4u@o}r+iAb~N4v0!O{M#`oY6OMh2WKiK{ICJ)FqJ@l7-H$DNpMKUje2S9_o^&Kr
zN}*D3{`vL%?ameRrt6uU|I9S0{1G?*s;u}>OKyd}*x;-0J?)-W-urd&qF_w9lThDd
zogM4Ej~Bk!m1kgY-yfqly*#%3exb~<GR;2UZzZwc|9GUX+b#Fo-g|LGpi5q-NA?@1
yqOw32Cx+>hr*)s;70g_Iq)tUCU;SS_!@KhnneRu%N-;1nFnGH9xvX<aXaWF{T*9RQ

literal 0
HcmV?d00001

diff --git a/observations/static/observations/js/observationViewMap.js b/observations/static/observations/js/observationViewMap.js
index 43a88c5e..fe85e9e0 100644
--- a/observations/static/observations/js/observationViewMap.js
+++ b/observations/static/observations/js/observationViewMap.js
@@ -21,7 +21,7 @@
 var map;
 var observationLayer;
 
-var initMap = function(geoJSON, container, mapAttribution)
+var initMap = function(geoJSON, poi, container, mapAttribution)
 {
 	var backgroundLayer = new ol.layer.Tile({
    	 	source: new ol.source.OSM({
@@ -50,49 +50,79 @@ var initMap = function(geoJSON, container, mapAttribution)
 	map.setView(view);
 	
 	var features = new ol.Collection();
-	var featureOverlay = new ol.layer.Vector({
-	    source: new ol.source.Vector({
-	      features: features
-	    }),
-	    style: new ol.style.Style({
-	      fill: new ol.style.Fill({
-	        color: 'rgba(255, 0, 255, 0.2)'
-	      }),
-	      stroke: new ol.style.Stroke({
-	        color: '#ff00ff',
-	        width: 2
-	      }),
-	      image: new ol.style.Circle({
-	        radius: 7,
-	        fill: new ol.style.Fill({
-	          color: '#ff00ff'
-	        })
-	      })
-	    })
-	  });
-	var format = new ol.format.GeoJSON();
-    var drawnfeatures = format.readFeatures(geoJSON, {
-      dataProjection: 'EPSG:4326',
-      featureProjection: map.getView().getProjection().getCode()
-    });
+	if(geoJSON != null)
+	{
+		var featureOverlay = new ol.layer.Vector({
+		    source: new ol.source.Vector({
+		      features: features
+		    }),
+		    style: new ol.style.Style({
+		      fill: new ol.style.Fill({
+		        color: 'rgba(255, 0, 255, 0.2)'
+		      }),
+		      stroke: new ol.style.Stroke({
+		        color: '#ff00ff',
+		        width: 2
+		      }),
+		      image: new ol.style.Circle({
+		        radius: 7,
+		        fill: new ol.style.Fill({
+		          color: '#ff00ff'
+		        })
+		      })
+		    })
+		  });
+	
+	
+		var format = new ol.format.GeoJSON();
+	    var drawnfeatures = format.readFeatures(geoJSON, {
+	      dataProjection: 'EPSG:4326',
+	      featureProjection: map.getView().getProjection().getCode()
+	    });
+	
     
-    // TODO: Convert small areas to points on large scale views
-    /**
-    for(var i in drawnfeatures)
-    {
-    	console.log(drawnfeatures[i].getGeometryName());
-    	var geome = drawnfeatures[i];
-    	if(geome.getGeometry() instanceof ol.geom.Polygon)
-    	{
-    		console.log(geome.getGeometry().getArea());
-    	}
-    	
-    }
-    console.log(drawnfeatures);
-    */
-    //featureOverlay.clear(true);
-    featureOverlay.getSource().addFeatures(drawnfeatures);
-    featureOverlay.setMap(map);
-    extent = featureOverlay.getSource().getExtent();
-    map.getView().fit(extent, map.getSize());
+	    // TODO: Convert small areas to points on large scale views
+	    /**
+	    for(var i in drawnfeatures)
+	    {
+	    	console.log(drawnfeatures[i].getGeometryName());
+	    	var geome = drawnfeatures[i];
+	    	if(geome.getGeometry() instanceof ol.geom.Polygon)
+	    	{
+	    		console.log(geome.getGeometry().getArea());
+	    	}
+	    	
+	    }
+	    console.log(drawnfeatures);
+	    */
+	    //featureOverlay.clear(true);
+	    featureOverlay.getSource().addFeatures(drawnfeatures);
+	    featureOverlay.setMap(map);
+		
+	    extent = featureOverlay.getSource().getExtent();
+	    map.getView().fit(extent, map.getSize());
+	}
+	else
+	{
+		/*var poiLayer = new ol.layer.Vector({
+		    source: new ol.source.Vector({
+		        url: "http://" + settings.vipslogicServerName + "/rest/pois/kml/" + settings.vipsOrganizationId + "?excludePoiId=" + poi.pointOfInterestId,
+		            projection: "EPSG:3857",
+		            format: new ol.format.KML()
+		      })
+		    });
+		    map.addLayer(poiLayer);*/
+		    var centerPosition =ol.proj.transform([poi.longitude,poi.latitude], 'EPSG:4326', map.getView().getProjection().getCode()); 
+		    view.setCenter(centerPosition);
+		    
+		    // Marker overlay
+		    stationMarker = new ol.Overlay({
+		      position: centerPosition,
+		      positioning: 'bottom-center',
+		      element: document.getElementById('poiMarker'),
+		      stopEvent: false
+		    });
+		    
+		    map.addOverlay(stationMarker);
+	}
 }
\ No newline at end of file
diff --git a/observations/templates/observations/detail.html b/observations/templates/observations/detail.html
index f0c72b4b..cfbbe408 100644
--- a/observations/templates/observations/detail.html
+++ b/observations/templates/observations/detail.html
@@ -45,6 +45,7 @@
 			<div id="observationViewMap" class="map" style="height: 400px;"></div>
 		</div>
 	</div>
+	<div style="display: none;"><div id="poiMarker" title="Marker"><img src="{% static "observations/images/bug_medium.png" %}"/></div></div>
 </div>
 {% endblock %}
 {% block customCSS %}
@@ -87,7 +88,16 @@
 		  		var illustration = observation.observationIllustrationSet[0]; 
 		  		document.getElementById("observationIllustration").innerHTML = "<img src='http://" + settings.vipslogicServerName + "/static/images/observations/" + observation.organismId + "/" + illustration.observationIllustrationPK.fileName + "' class='img-responsive'/>";
 		  	}
-		  	initMap(observation.geoinfo,"observationViewMap","{{settings.MAP_ATTRIBUTION|safe}}");
+		  	if(observation.locationPointOfInterestId > 0)
+		  	{
+		  		$.getJSON( "http://" + settings.vipslogicServerName + "/rest/poi/" + observation.locationPointOfInterestId , function( poi ) {
+		  			initMap(null,poi,"observationViewMap","{{settings.MAP_ATTRIBUTION|safe}}")
+		  		});
+		  	}
+		  	else
+		  	{
+		  		initMap(observation.geoinfo,null,"observationViewMap","{{settings.MAP_ATTRIBUTION|safe}}");
+		  	}
 		  });
 	});
 </script>
-- 
GitLab