Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/mapviewer
diff options
context:
space:
mode:
Diffstat (limited to 'mapviewer')
-rw-r--r--mapviewer/MediaMarker.js21
-rw-r--r--mapviewer/blue_map_dot.pngbin0 -> 308 bytes
-rw-r--r--mapviewer/magenta_map_dot.pngbin0 -> 303 bytes
-rw-r--r--mapviewer/mapCenter.html631
-rw-r--r--mapviewer/orange_map_dot.pngbin0 -> 315 bytes
5 files changed, 652 insertions, 0 deletions
diff --git a/mapviewer/MediaMarker.js b/mapviewer/MediaMarker.js
new file mode 100644
index 0000000..a47b00b
--- /dev/null
+++ b/mapviewer/MediaMarker.js
@@ -0,0 +1,21 @@
+function MediaMarker(){
+return{
+ initialize:function(pt, markerServer, markerId, tags, info, icon)
+ {this.markerServer=markerServer;
+ this.markerId=markerId;
+ this.pt=pt;
+ this.tags=tags;
+ this.info=info;
+ if(icon==null){icon="null";}
+ this.icon=icon;
+ this.iconDiv=null;
+ if((this.tags == undefined)||(this.tags==null))
+ {this.tags = "";}
+ },
+ getLatLng:function(){return this.pt;},
+ get_position:function(){return this.pt;},
+ get_info:function(){return this.info;},
+ getMarkerServer:function(){return this.markerServer;},
+ getMarkerId:function(){return this.markerId;}
+};
+} \ No newline at end of file
diff --git a/mapviewer/blue_map_dot.png b/mapviewer/blue_map_dot.png
new file mode 100644
index 0000000..196ecc2
--- /dev/null
+++ b/mapviewer/blue_map_dot.png
Binary files differ
diff --git a/mapviewer/magenta_map_dot.png b/mapviewer/magenta_map_dot.png
new file mode 100644
index 0000000..4c79ea9
--- /dev/null
+++ b/mapviewer/magenta_map_dot.png
Binary files differ
diff --git a/mapviewer/mapCenter.html b/mapviewer/mapCenter.html
new file mode 100644
index 0000000..41d5a9c
--- /dev/null
+++ b/mapviewer/mapCenter.html
@@ -0,0 +1,631 @@
+<html>
+<head id="head">
+ <title>Offline Map</title>
+<script src="MediaMarker.js" type="text/javascript"></script>
+<script src="file:///home/olpc/Library/MapPack/Maps.js" type="text/javascript"></script>
+<script type="text/javascript">
+var zm=10;
+var realZm=800;
+var xOff=0;
+var yOff=0;
+var factor=0.75;
+var westBound=-74.44;
+var northBound=20.14;
+var portMapOn=false;
+var markerList=[];
+var lineList=[];
+var editTxt="Edit";
+var addTxt="Add";
+var describeTxt="Describe this place";
+var ajaxPort,cometPort,mID,canvas;
+var isMedia=false;
+var addingInfo=false;
+var iMarker = null;
+var addingMedia=false;
+var addingLines=false;
+var currentLine=-1;
+var addingPasteMap=false;
+var pasteType="";
+var mediaWin=null;
+var isOffXO=false;
+function gup(nm){nm=nm.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");var rxS="[\\?&]"+nm+"=([^&#]*)";var rx=new RegExp(rxS);var rs=rx.exec(window.location.href);if(!rs){return null;}else{return rs[1];}}
+function init(){
+ ajaxPort = gup("ajaxPort");
+ cometPort = gup("cometPort");
+ lhCometInit();
+ canvas = $("mapCover").getContext("2d");
+ try{
+ //fix all image links
+ for(var m=0;m<maps.length;m++){
+ if(isOffXO){
+ maps[m].link="../../MapPack/" + maps[m].link;
+ }
+ else{
+ maps[m].link="file:///home/olpc/Library/MapPack/" + maps[m].link;
+ }
+ if(m>0){
+ maps[m].mapdiv=$("overlay-"+maps[m].mapCode);
+ maps[m].isOn=false;
+ }
+ else{
+ // set base map
+ $("mapItself").src=maps[0].link;
+ }
+ }
+ }
+ catch(e){
+ // testing without XO Laptop, assume it's in a neighboring folder
+ isOffXO=true;
+ var newScript = document.createElement('script');
+ newScript.src = "../../MapPack/Maps.js"
+ newScript.type = "text/javascript";
+ newScript.onload = init;
+ $("head").appendChild(newScript);
+ return;
+ }
+ /*
+ var grandG={x:0.5904,y:0.5987,width:0.0168,zoom:18,isOn:false,src:"GrandGoave.jpg"};
+ grandG.mapdiv=$("overlay-5");
+ var sofMira={x:0.4894,y:0.598,width:0.015,zoom:16,isOn:false,src:"SofMiragoane.jpg"};
+ sofMira.mapdiv=$("overlay-3");
+ */
+ var southWest = toLatLng(0,600);
+ var northEast = toLatLng(800,0);
+ var newScript = document.createElement('script');
+ newScript.src = "http://127.0.0.1:" + ajaxPort + "/mediaQuery.js?s=" + southWest[0] + "&w=" + southWest[1] + "&n=" + northEast[0] + "&e=" + northEast[1];
+ newScript.type = "text/javascript";
+ newScript.onload = lhAjax;
+ $("head").appendChild(newScript);
+ //addPt(-1.95575,30.437354,"blue crates thing","blue",false);
+ //addPt(0.021026,32.441184,"blue",false);
+ //moveTo(18.52876,-73.512198,20);
+ //addLine("x00x2","#00f",8,[[19,-73],[18.9,-71]]);
+ //addLine("poly-x00x3","#f00",8,[[19.7,-72.79],[20.1,-73.173],[19.79,-73.31]]);
+}
+function lineMode(type){
+ if(addingLines){
+ addingLines = false;
+ $("mapCover").className = "-moz-grab";
+ var newScript = document.createElement('script');
+ var dLine = lineList[currentLine];
+ var ptOutput = [];
+ for(var p=0;p<dLine.pts.length;p++){
+ ptOutput.push(dLine.pts[p][0] + "|" + dLine.pts[p][1]);
+ }
+ ptOutput = ptOutput.join("|");
+ newScript.src = "http://127.0.0.1:" + ajaxPort + "/addLine.js?id=" + dLine.id + "&col=" + dLine.color.replace("#","") + "&thick=4&pts=" + ptOutput;
+ newScript.type = "text/javascript";
+ newScript.onload = lhAjax;
+ $("head").appendChild(newScript);
+ //showInfo(newScript.src);
+ currentLine = -1;
+ updateLines();
+ }
+ else{
+ addingLines = true;
+ $("mapCover").className = "crosshairMap";
+ var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz";
+ var colorchars = "0123456789abcdef";
+ var string_length = 8;
+ var lineID = '';
+ for(var i=0; i<string_length; i++) {
+ var rnum = Math.floor(Math.random() * chars.length);
+ lineID += chars.substring(rnum,rnum+1);
+ }
+ if(type.indexOf("poly") != -1){
+ lineID = "poly-" + lineID;
+ }
+ var randColor = "";
+ for(var i=0; i<3; i++){
+ var rnum = Math.floor(Math.random() * colorchars.length);
+ randColor += colorchars.substring(rnum,rnum+1);
+ }
+ currentLine = lineList.length;
+ addLine(lineID,randColor,4,[]);
+ }
+}
+function placeVertex(event){
+ var vert = toLatLng(event.clientX,event.clientY);
+ lineList[currentLine].pts.push(vert)
+ updateLines();
+}
+function addLine(line_id,line_color,line_thick,line_pts){
+ try{
+ if(line_pts.indexOf("|") != -1){
+ //in |-separated format from Python
+ line_pts_b = line_pts.split("|");
+ line_pts=[];
+ for(var lpi=0;lpi<line_pts_b.length;lpi+=2){
+ line_pts.push([line_pts_b[lpi],line_pts_b[lpi+1]]);
+ }
+ }
+ }
+ catch(e){}
+ for(var l=0;l<lineList.length;l++){
+ if(lineList[l].id==line_id){
+ lineList[l].color="#"+line_color;
+ lineList[l].thickness=line_thick;
+ lineList[l].pts=line_pts;
+ updateLines();
+ return;
+ }
+ }
+ lineList.push({id:line_id,color:"#"+line_color,thickness:line_thick,pts:line_pts});
+ if(!addingLines){
+ currentLine=lineList.length-1;
+ addingLines=true;
+ lineMode('new');
+ }
+}
+function updateLines(){
+ if(lineList.length == 0){ return }
+ $("mapCover").width=$("mapCover").width;
+ for(var l=0;l<lineList.length;l++){
+ var dLine=lineList[l];
+ if(dLine.pts.length < 2){continue}
+ var lastPt=dLine.pts[0];
+ var drewLast=false;
+ var firstPt=lastPt;
+ if(dLine.id.indexOf("poly")==-1){
+ canvas.strokeStyle=dLine.color;
+ canvas.lineWidth=dLine.thickness;
+ }
+ else{
+ canvas.fillStyle=dLine.color;
+ canvas.lineWidth=0;
+ //canvas.strokeStyle="#000";
+ drewLast=true;
+ }
+ if(inBounds(pixel(lastPt[0],lastPt[1]))||drewLast){
+ drewLast = true;
+ canvas.beginPath();
+ canvas.moveTo(parseInt(pixel(lastPt[0],lastPt[1])[0]),parseInt(pixel(lastPt[0],lastPt[1])[1]));
+ }
+ for(var p=1;p<dLine.pts.length;p++){
+ var thisPt=dLine.pts[p];
+ if(drewLast){
+ canvas.lineTo(parseInt(pixel(thisPt[0],thisPt[1])[0]),parseInt(pixel(thisPt[0],thisPt[1])[1]));
+ }
+ else{
+ if(inBounds(pixel(lastPt[0],lastPt[1]))){
+ drewLast=true;
+ canvas.beginPath();
+ canvas.moveTo(parseInt(pixel(lastPt[0],lastPt[1])[0]),parseInt(pixel(lastPt[0],lastPt[1])[1]));
+ canvas.lineTo(parseInt(pixel(thisPt[0],thisPt[1])[0]),parseInt(pixel(thisPt[0],thisPt[1])[1]));
+ }
+ }
+ lastPt=thisPt;
+ }
+ if(drewLast){
+ if(dLine.id.indexOf("poly")==-1){
+ canvas.stroke();
+ }
+ else{
+ canvas.closePath();
+ canvas.fill();
+ }
+ }
+ }
+ if(currentLine>=0){
+ //draw a square at each point in the line or polygon
+ for(var p=0;p<lineList[currentLine].pts.length;p++){
+ var thisPt=lineList[currentLine].pts[p];
+ canvas.fillStyle="#000";
+ canvas.fillRect(parseInt(pixel(thisPt[0],thisPt[1])[0])-6,parseInt(pixel(thisPt[0],thisPt[1])[1])-6,12,12);
+ }
+ }
+}
+function inBounds(px){
+ if(px[0]<0){return false;}
+ if(px[0]>820){return false;}
+ if(px[1]<0){return false;}
+ if(px[1]>520){return false;}
+ return true;
+}
+function mapPaste(type){
+ addingPasteMap=true;
+ pasteType=type;
+ $("mapCover").className = "crosshairMap";
+}
+function placeOverlay(event){
+ addingPasteMap=false;
+ $("mapCover").className="-moz-grab";
+ var ctr = toLatLng(event.clientX,event.clientY);
+ var standardZoom = 17;
+ if(zm < 13){
+ standardZoom = 10;
+ }
+ else if(zm < 16){
+ standardZoom = 12;
+ }
+ else if(zm < 18){
+ standardZoom = 14;
+ }
+ else{
+ standardZoom = 15;
+ }
+ addPt(toLatLng(304,152)[0],toLatLng(304,152)[1],"","orange",false);
+ var minimap = markerList[markerList.length-1].iconDiv;
+ minimap.onclick="";
+ if(pasteType=='osm'){
+ minimap.src="http://pafciu17.dev.openstreetmap.org/?module=map&width=640&height=404&center="+ctr[1]+","+ctr[0]+"&zoom="+standardZoom;
+ }
+ else{
+ minimap.src="http://maps.google.com/maps/api/staticmap?sensor=false&key=ABQIAAAAxkKtrWN5q-vPTLRVmO_r6RRFDCLHCbUG3VrjXnZmMRXvQdFL3RS-b-ld9hTrkIgQlYsxPQ1kYq6y9A&size=640x404&format=jpg&center="+ctr[0]+","+ctr[1]+"&zoom="+standardZoom+"&maptype=hybrid";
+ }
+ minimap.onclick="";
+ minimap.style.zIndex=-1;
+ var bds = getStandardBounds(ctr,standardZoom); // returns [ sw=[lat,lng] , ne=[lat,lng] ]
+ var osmMap={north:bds[1][0],east:bds[1][1],west:bds[0][1],mapCode:-1,showZoom:zm-1,isOn:true};
+ osmMap.mapdiv=minimap;
+ maps.push(osmMap);
+ markerList.pop();
+ portMapGo();
+}
+function filterTags(sTerms){
+ sTerms = unescape(sTerms).toLowerCase();
+ sTerms = replaceAll(sTerms," ","");
+ for(var m=0;m<markerList.length;m++){
+ var formattedInfo = replaceAll(markerList[m].info.toLowerCase()," ","");
+ if(formattedInfo.indexOf(sTerms) != -1){
+ moveTo(markerList[m].pt[0],markerList[m].pt[1]);
+ closeiWin();
+ isMedia=false;
+ showInfo(markerList[m].info);
+ var bigMarker = markerList[m].iconDiv;
+ bigMarker.width=parseInt(1.8*bigMarker.width);
+ setTimeout(function(){bigMarker.width/=1.8},5000);
+ return;
+ }
+ }
+}
+function replaceAll(src,old,fix){
+ while(src.indexOf(old) != -1){
+ src = src.replace(old,fix);
+ }
+ return src;
+}
+function lhCometInit()
+{ var newScript = document.createElement('script');
+ var d = new Date();
+ newScript.src = "http://127.0.0.1:" + cometPort + "/comet.js?t="+d.getTime()
+ newScript.type = "text/javascript";
+ newScript.onload = lhCometResponse;
+ $("head").appendChild(newScript);
+}
+function lhCometResponse(){ lhCometInit(); }
+function moveTo(lat,lng){moveTo(lat,lng,zm)}
+function moveTo(lat,lng,zoom){
+ while(zoom > zm){zoomIn()}
+ while(zoom < zm){zoomOut()}
+ var currentOffset = pixel(lat,lng);
+ xOff+=(410-1*currentOffset[0]);
+ yOff+=(260-1*currentOffset[1]);
+ $("mapItself").style.left=xOff;
+ $("mapItself").style.top=yOff;
+ portMapGo();
+}
+function preAddInfo(){
+ closeiWin();
+ addingInfo=true;
+ $("mapCover").className = "crosshairMap";
+}
+function placeInfoMarker(event){
+ addingInfo = false;
+ var loc = toLatLng(event.clientX,event.clientY);
+ addPt(loc[0],loc[1],describeTxt,"magenta",true);
+ addedMedia();
+}
+function addPt(lat,lng,text,color,showNow){
+ for(var i=0;i<markerList.length;i++){
+ if(markerList[i].pt[0] == lat){
+ if(markerList[i].pt[1] == lng){
+ markerList[i].info = unescape(text);
+ return;
+ }
+ }
+ }
+ var mk = MediaMarker();
+ mID="info-"+markerList.length;
+ mk.initialize([lat,lng],null,mID,null,unescape(text),color+"_map_dot.png");
+ mk.iconDiv=document.createElement("img");
+ mk.iconDiv.className="marker";
+ mk.iconDiv.src=mk.icon;
+ var px=pixel(mk.pt[0],mk.pt[1]);
+ mk.iconDiv.style.left=parseInt(px[0]-mk.iconDiv.width/2)+"px";
+ mk.iconDiv.style.top=parseInt(px[1]-mk.iconDiv.height/2)+"px";
+ mk.iconDiv.style.position="absolute";
+ mk.iconDiv.style.display="block";
+ mk.iconDiv.onclick=function(event){mID=mk.markerId;isMedia=false;showInfo(mk.get_info());}
+ document.body.appendChild(mk.iconDiv);
+ markerList.push(mk);
+ if(showNow){
+ isMedia = false;
+ mID=mk.getMarkerId();
+ showInfo(text);
+ }
+}
+function pixel(lat,lng){
+ //top left is estimated to be 20.18025 N, -74.62984 W
+ var latdiff = (maps[0].north - 1.00*lat)*latFactor*Math.pow(1.35,zm-10.0);
+ var lngdiff = (1.00*lng - maps[0].west)*lngFactor*Math.pow(1.35,zm-10.0);
+ var x = lngdiff*1.00 + xOff*1.00;
+ var y = latdiff*1.00 + yOff*1.00;
+ return [x,y];
+}
+function zoomIn(){
+ var centerLL = toLatLng(410,260);
+ zm+=1;
+ realZm*=1.35;
+ $("mapItself").style.width=parseInt(realZm)+"px";
+ xOff=1*$("mapItself").style.left.replace("px","").replace("pt","");
+ yOff=1*$("mapItself").style.top.replace("px","").replace("pt","");
+ moveTo(centerLL[0],centerLL[1]);
+}
+function zoomOut(){
+ var centerLL = toLatLng(410,260);
+ zm-=1;
+ realZm/=1.35;
+ $("mapItself").style.width=parseInt(realZm);
+ xOff=1*$("mapItself").style.left.replace("px","").replace("pt","");
+ yOff=1*$("mapItself").style.top.replace("px","").replace("pt","");
+ moveTo(centerLL[0],centerLL[1]);
+}
+function moveLeft(){
+ xOff+=2000/zm;
+ $("mapItself").style.left=parseInt(xOff);
+ portMapGo();
+}
+function moveRight(){
+ xOff-=2000/zm;
+ $("mapItself").style.left=parseInt(xOff);
+ portMapGo();
+}
+function moveUp(){
+ yOff+=2000/zm;
+ $("mapItself").style.top=parseInt(yOff);
+ portMapGo();
+}
+function moveDown(){
+ yOff-=2000/zm;
+ $("mapItself").style.top=parseInt(yOff);
+ portMapGo();
+}
+function mrkWithId(id){
+ for(var i=0;i<markerList.length;i++){
+ if(markerList[i].getMarkerId() == id){
+ return markerList[i];
+ }
+ }
+}
+function editInfoMarker(id){
+ iMarker = mrkWithId(id);
+ mID = id;
+ isMedia = true;
+ showInfo("<textarea id='infoText' style='height:400;width:350;'>" + iMarker.get_info() + "</textarea><br/><input type='button' class='centerButton' value='" + addTxt + "' onclick='updateInfo(\"" + iMarker.getMarkerId() + "\")'/>");
+}
+function updateInfo(id){
+ closeiWin();
+ var iMarker = mrkWithId(id);
+ iMarker.info = $("infoText").value;
+ var loc = iMarker.getLatLng();
+ var newScript = document.createElement('script');
+ newScript.src = "http://127.0.0.1:" + ajaxPort + "/addInfoMarker.js?lat=" + loc[0] + "&lng=" + loc[1] + "&info=" + iMarker.info + "&icon=" + iMarker.icon + "&isNew=True";
+ newScript.type = "text/javascript";
+ newScript.onload = lhAjax;
+ $("head").appendChild(newScript);
+}
+function lhAjax(){}
+function updateMarkers(){
+ for(var m=0;m<markerList.length;m++){
+ var lat=markerList[m].pt[0];
+ var lng=markerList[m].pt[1];
+ var px=pixel(lat,lng);
+ markerList[m].iconDiv.style.left=parseInt(px[0]-markerList[m].iconDiv.width/2);
+ markerList[m].iconDiv.style.top=parseInt(px[1]-markerList[m].iconDiv.height/2);
+ }
+}
+function getStandardBounds(centerLL,zoom){
+ var sw=[1*centerLL[0]-0.55618*Math.pow(2,(9-1*zoom)),centerLL[1]*1 - 0.98877*Math.pow(2,(9-1*zoom))];
+ var ne=[1*centerLL[0]+0.55618*Math.pow(2,(9-1*zoom)),centerLL[1]*1 + 0.98877*Math.pow(2,(9-1*zoom))];
+ return [sw,ne];
+}
+function portMapGo(){
+ //skip m=0, that's the base map
+ for(var m=1;m<maps.length;m++){
+ if(zm>=maps[m].showZoom){
+ if((pixel(maps[m].north,maps[m].east)[0]<0)||(pixel(maps[m].north,maps[m].west)[0]>820)){
+ maps[m].isOn=false;
+ if(maps[m].mapCode > 0){
+ if(maps[m].mapdiv.src.indexOf(maps[m].link.replace("../../",""))!=-1){
+ maps[m].mapdiv.style.display="none";
+ }
+ }
+ else{
+ maps[m].mapdiv.style.display="none";
+ }
+ }
+ else if((pixel(maps[m].north,maps[m].west)[1]+1*maps[m].mapdiv.height<0)||(pixel(maps[m].north,maps[m].west)[1]>620)){
+ maps[m].isOn=false;
+ if(maps[m].mapCode > 0){
+ if(maps[m].mapdiv.src.indexOf(maps[m].link.replace("../../",""))!=-1){
+ maps[m].mapdiv.style.display="none";
+ }
+ }
+ else{
+ maps[m].mapdiv.style.display="none";
+ }
+ }
+ else{
+ maps[m].isOn=true;
+ if(maps[m].mapCode > 0){
+ //shared image-div
+ if(maps[m].mapdiv.src.indexOf(maps[m].link.replace("../../",""))==-1){
+ //swap between major maps
+ maps[m].mapdiv.src=maps[m].link;
+ }
+ }
+ var topleft = pixel(maps[m].north,maps[m].west);
+ var mWidth = pixel(maps[m].north,maps[m].east)[0]-topleft[0];
+ maps[m].mapdiv.style.width = parseInt(mWidth);
+ maps[m].mapdiv.style.left=parseInt(topleft[0]);
+ maps[m].mapdiv.style.top=parseInt(topleft[1]);
+ maps[m].mapdiv.style.display="block";
+ }
+ }
+ else{
+ if(maps[m].mapdiv.src.indexOf(maps[m].src)!=-1){
+ maps[m].mapdiv.style.display="none";
+ }
+ maps[m].isOn=false;
+ }
+ }
+ updateMarkers();
+ updateLines();
+}
+function showInfo(er){
+ //if(er==''){return}
+ if(!isMedia){
+ if(er.indexOf("::") != -1){
+ if(er.indexOf('wiki::') != -1){ er = '<b>' + er.replace('wiki::','</b><iframe height="400" width="350" src="http://simple.m.wikipedia.org/wiki/') + '"></iframe>'; }
+ else if(er.indexOf('img::') != -1){ er = '<b>' + er.replace('img::','</b><br/><img style="max-height:400;max-width:350;" src="') + '"/>'; }
+ else if(er.indexOf('pic::') != -1){ er = '<b>' + er.replace('pic::','</b><br/><img style="max-height:400;max-width:350;" src="') + '"/>'; }
+ else if(er.indexOf('google::') != -1){ er = er.replace('google::','<iframe height="400" width="350" src="http://google.com/search?q=') + '"></iframe>'; }
+ else if(er.indexOf('vid::') != -1){ er = '<b>' + er.replace('vid::','</b><br/><object width="400" height="350" type="application/ogg" data="') + '"></object>'; }
+ else if((er.indexOf('wiki') != -1)&&(er.indexOf('::') > er.indexOf('wiki'))){
+ var erBegin = er.substring(0,er.lastIndexOf('wiki'));
+ er = er.substring(er.lastIndexOf('wiki'));
+ var wikiCode = er.substring(4,er.indexOf('::'));
+ er = er.substring(er.indexOf('::') + 2);
+ er = '<b>' + erBegin + '</b><iframe height="400" width="350" src="http://' + wikiCode + '.m.wikipedia.org/wiki/' + er + '"></iframe>';
+ }
+ }
+ er+="<br/><input type='button' class='centerButton' value='" + editTxt + "' onclick='editInfoMarker(" + '"' + mID + '"' + ")'/>";
+ }
+ $("iWin").innerHTML = er;
+ $("iEnc").style.display = "block";
+ $("iWin").style.display = "block";
+}
+function closeiWin(){
+ $("iWin").style.display = "none";
+ $("iEnc").style.display = "none";
+ mediaWin=null;
+ var newScript = document.createElement('script');
+ var d = new Date();
+ newScript.src = "http://127.0.0.1:" + ajaxPort + "/hideMedia.js?t="+d.getTime()
+ newScript.type = "text/javascript";
+ $("head").appendChild(newScript);
+}
+function toLatLng(x,y){
+ x+=".000000";
+ y+=".000000";
+ x-=xOff;
+ y-=yOff;
+ var latdiff = y / latFactor / Math.pow(1.35,zm-10);
+ var lngdiff = x / lngFactor / Math.pow(1.35,zm-10);
+ var mapLat = maps[0].north - latdiff;
+ var mapLng = maps[0].west + lngdiff;
+ return [mapLat.toFixed(5),mapLng.toFixed(5)];
+}
+function updateLoc(){
+ var ctr = toLatLng(410,260);
+ var newScript = document.createElement('script');
+ if(mediaWin != null){
+ newScript.src = "http://127.0.0.1:" + ajaxPort + "/updateLocation.js?lat=" + ctr[0] + "&lng=" + ctr[1] + "&z=" + zm + "&x=" + ($("iEnc").offsetLeft*1 + 25) + "&y=" + ($("iEnc").offsetTop*1 + 30);
+ }
+ else{
+ newScript.src = "http://127.0.0.1:" + ajaxPort + "/updateLocation.js?lat=" + ctr[0] + "&lng=" + ctr[1] + "&z=" + zm + "&x=-1&y=-1";
+ }
+ newScript.type = "text/javascript";
+ newScript.onload = lhAjax;
+ $("head").appendChild(newScript);
+}
+function infoImg(id){
+ showMedia('<div style="color:#fff;font-size:45pt;width:200;">a<br/>b<br/>a<br/>b<br/><Media>a</div>');
+ var newScript=document.createElement('script');
+ newScript.src="http://127.0.0.1:" + ajaxPort + "/showMedia.js?id=" + id + "&x=" + ($("iEnc").offsetLeft*1 + 25) + "&y=" + ($("iEnc").offsetTop*1 + 10) + "&up=true&rt=true";
+ newScript.type="text/javascript";
+ newScript.onload=lhAjax;
+ $("head").appendChild(newScript);
+}
+function showMedia(er){
+ mediaWin = $("iWin");
+ $("iWin").innerHTML = er;
+ $("iEnc").style.display = "block";
+ $("iWin").style.display = "block";
+}
+function preAddMedia()
+{ if(!mediaWin){closeiWin();}
+ addingMedia = true;
+ updateLoc();
+ $("mapCover").className="crosshairMap";
+}
+function placeAddMedia(event){
+ var pt=toLatLng(event.clientX, event.clientY);
+ var newScript=document.createElement('script');
+ newScript.src="http://127.0.0.1:" + ajaxPort + "/placeAddMedia.js?lat=" + pt[0] + "&lng=" + pt[1];
+ newScript.type="text/javascript";
+ newScript.onload=lhAjax;
+ $("head").appendChild(newScript);
+ addedMedia();
+}
+function postAddMedia( lat, lng, url, basename, tags ){
+ var mk=MediaMarker();
+ mk.initialize([lat,lng],url,basename,tags);
+ mk.iconDiv=document.createElement("img");
+ mk.iconDiv.className="marker";
+ mk.iconDiv.src="orange_map_dot.png";
+ var px=pixel(mk.pt[0],mk.pt[1]);
+ mk.iconDiv.style.left=parseInt(px[0]-mk.iconDiv.width/2)+"px";
+ mk.iconDiv.style.top=parseInt(px[1]-mk.iconDiv.height/2)+"px";
+ mk.iconDiv.style.position="absolute";
+ mk.iconDiv.style.display="block";
+ mk.iconDiv.onclick=function(event){mID=mk.markerId;infoImg(mID);}
+ document.body.appendChild(mk.iconDiv);
+ markerList.push(mk);
+ hidePics();
+ addedMedia();
+ infoImg(mk.markerId);
+ updateLoc();
+}
+function addedMedia()
+{ addingMedia=false;
+ $("mapCover").className="-moz-grab";
+}
+function clickToZoom(event){
+ var ctr = toLatLng(event.clientX,event.clientY);
+ moveTo(ctr[0],ctr[1],zm+1);
+}
+function $(id){return document.getElementById(id)}
+</script>
+<style type="text/css">
+body{font-family:arial}
+#iEnc{position:absolute;left:150;top:30;-moz-border-radius:10;border:2px solid #000;background:#fff;width:390;padding:3;padding-left:10;display:none;z-index:10}
+input.cBtn{float:right}
+input:hover{color:#000;cursor:pointer}
+canvas.crosshairMap{cursor:crosshair}
+img.marker{cursor:pointer}
+</style>
+</head>
+<body onload="init()">
+ <img id="mapItself" src="" style="position:absolute;left:0px;top:0px;width:800px;z-Index:-5"/>
+ <div id="miniMaps">
+ <img id="overlay-1" src="orange_map_dot.png" style="position:absolute;display:none;z-index:-4;"/>
+ <img id="overlay-2" src="orange_map_dot.png" style="position:absolute;display:none;z-index:-4;"/>
+ <img id="overlay-3" src="orange_map_dot.png" style="position:absolute;display:none;z-index:-4;"/>
+ <img id="overlay-4" src="orange_map_dot.png" style="position:absolute;display:none;z-index:-4;"/>
+ <img id="overlay-5" src="orange_map_dot.png" style="position:absolute;display:none;z-index:-4;"/>
+ </div>
+ <canvas id="mapCover" style="position:absolute;left:0px;top:0px;" width="820" height="520" onclick="if(addingMedia){placeAddMedia(event)}if(addingInfo){placeInfoMarker(event)}if(addingLines){placeVertex(event)}if(addingPasteMap){placeOverlay(event)}" ondblclick="clickToZoom(event)"></canvas>
+ <div style="position:absolute;left:20px;top:80px;background-color:#fff;border:1px solid #000;z-index:100;">
+ <input type="button" value="+" style="font-size:12pt;z-index:101;" onclick="zoomIn()"/>
+ <input type="button" value="-" style="font-size:12pt;z-index:101;" onclick="zoomOut()"/>
+ <table>
+ <tr><td></td><td><input type="button" value="&uarr;" style="font-size:12pt;z-index:101;" onclick="moveUp()"/></td><td></td></tr>
+ <tr><td><input type="button" value="&larr;" style="font-size:12pt;z-index-101;" onclick="moveLeft()"/></td><td></td><td><input type="button" value="&rarr;" style="font-size:12pt;" onclick="moveRight()"/></td></tr>
+ <tr><td></td><td><input type="button" value="&darr;" style="font-size:12pt;z-index:101;" onclick="moveDown()"/></td><td></td></tr>
+ </table>
+ </div>
+ <div id="iEnc"><input type="button" class="cBtn" onclick="closeiWin()" value="x"/><div id="iWin"></div></div>
+</body>
+</html>
diff --git a/mapviewer/orange_map_dot.png b/mapviewer/orange_map_dot.png
new file mode 100644
index 0000000..b3fa7d4
--- /dev/null
+++ b/mapviewer/orange_map_dot.png
Binary files differ