home *** CD-ROM | disk | FTP | other *** search
/ Sony α Series DSLR Camera Picture Utilities / SONYPICTUTIL.ISO / DIApp / Mapview / data1.cab / Common / mapview.js < prev    next >
Encoding:
Text File  |  2007-08-15  |  5.5 KB  |  220 lines

  1. document.oncontextmenu = function () { return false; };
  2.  
  3. var $_ELEMENT_ = new Array();
  4. function $(id) {
  5.     if (typeof $_ELEMENT_[id]!='object') {
  6.         $_ELEMENT_[id] = document.getElementById(id);
  7.     }
  8.     return $_ELEMENT_[id];
  9. }
  10.  
  11. var $gmap;
  12. function load() {
  13.     if (GBrowserIsCompatible()) {
  14.         $('info').innerHTML = $message.information;
  15.  
  16.         $gmap = new GMap2($('map'));
  17.         $gmap.addControl(new GLargeMapControl());
  18.         $gmap.addControl(new GMapTypeControl());
  19.         $gmap.addControl(new GScaleControl());
  20.         $gmap.setCenter(new GLatLng(0,0), 1);
  21.         var icon = new GIcon();
  22.         icon.image    = 'pin_std1.png';
  23.         icon.shadow    = 'pin_std2.png';
  24.         icon.iconSize    = icon.shadowSize = new GSize(30, 32);
  25.         icon.iconAnchor    = new GPoint(9, 31);
  26.         icon.infoWindowAnchor = new GPoint(16, 3);
  27.         for (var i=0; i<$marker.length; i++) {
  28.             createMarker(i, icon);
  29.         }
  30.  
  31.         createThumbnailList();
  32.  
  33.         if (!$marker[$select].gmarker) {
  34.             for (var i=0; i<$marker.length; i++) {
  35.                 if ($marker[i].gmarker) {
  36.                     $select = i;
  37.                     break;
  38.                 }
  39.             }
  40.         }
  41.         if ($marker[$select].gmarker) {
  42.             $gmap.setCenter(dms2gpoint($marker[$select]), 9);
  43.             GEvent.trigger($marker[$select].gmarker, 'click');
  44.         }
  45.     }
  46. }
  47.  
  48. function unload() {
  49.     GUnload();
  50. }
  51.  
  52. function createMarker(id, icon) {
  53.     var gpoint = dms2gpoint($marker[id]);
  54.     if (gpoint==null) return null;
  55.     var gmarker = new GMarker(gpoint, icon);
  56.     gmarker.number = id;
  57.     $gmap.addOverlay(gmarker);
  58.     GEvent.addListener(gmarker, 'click', function () {
  59.         gmarker.openInfoWindow(createMarkerMsg(this.number));
  60.         $('thumb_'+this.number).focus();
  61.     });
  62.     $marker[id].gmarker    = gmarker;
  63. }
  64.  
  65. function dms2gpoint (marker) {
  66.     var lng = null;
  67.     var lat = null;
  68.     var a;
  69.     a = marker.lng.split(':');
  70.     if (a[0]=='E' || a[0]=='W') {
  71.         lng = parseInt(a[1],10)+(parseInt(a[2],10)*60+parseFloat(a[3]))/3600;
  72.         if (lng>180 || lng<0) lng = null;
  73.         else if (a[0]=='W') lng = -lng;
  74.     }
  75.     a = marker.lat.split(':');
  76.     if (a[0]=='N' || a[0]=='S') {
  77.         lat = parseInt(a[1],10)+(parseInt(a[2],10)*60+parseFloat(a[3]))/3600;
  78.         if (lat>90 || lat<0) lat = null;
  79.         else if (a[0]=='S') lat = -lat;
  80.     }
  81.  
  82.     if (lng==null || lat==null) return null;
  83.     return new GLatLng(lat, lng);
  84. }
  85.  
  86. function createThumbnailList() {
  87.     var list    = $('list');
  88.     var thumb1    = $('thumb1');        thumb1.removeAttribute('id');
  89.     var thumb2    = $('thumb2');        thumb2.removeAttribute('id');
  90.     var shadow1    = $('shadow1');        shadow1.removeAttribute('id');
  91.     var shadow2    = $('shadow2');        shadow2.removeAttribute('id');
  92.     var gps        = $('gps');        gps.removeAttribute('id');
  93.     var thumbTime    = $('thumbTime');    thumbTime.removeAttribute('id');
  94.  
  95.     for (var i=0; i<$marker.length; i++) {
  96.         var marker = $marker[i];
  97.  
  98.         var shdw1 = shadow1.cloneNode();
  99.         var shdw2 = shadow2.cloneNode();
  100.         var img = document.createElement('img');
  101.         img.setAttribute('src', marker.cache);
  102.         var x;
  103.         var y;
  104.         if (marker.width>marker.height) {
  105.             x = 100;
  106.             y = Math.ceil(marker.height * x / marker.width);
  107.         } else {
  108.             y = 100;
  109.             x = Math.ceil(marker.width * y / marker.height);
  110.         }
  111.         img.style.width = shdw1.style.width = shdw2.style.width = x + 'px';
  112.         img.style.height= shdw1.style.height= shdw2.style.height= y + 'px';
  113.  
  114.         var link = marker.gmarker ? thumb1.cloneNode() : thumb2.cloneNode();
  115.         link.setAttribute('id', 'thumb_'+i);
  116.         link.appendChild(img);
  117.         link.appendChild(shdw1);
  118.         link.appendChild(shdw2);
  119.         if (marker.gmarker) {
  120.             var icon = gps.cloneNode();
  121.             icon.style.left    = (x - 16) + 'px';
  122.             icon.style.top    = (y - 16) + 'px';
  123.             link.appendChild(icon);
  124.         }
  125.  
  126.         list.appendChild(link);
  127.         var div = thumbTime.cloneNode();
  128.         div.appendChild(document.createTextNode(marker.time));
  129.         list.appendChild(div);
  130.     }
  131. }
  132.  
  133. function createMarkerMsg(id) {
  134.     var marker = $marker[id];
  135.  
  136.     var link = marker.broken ? $('msg2').cloneNode() : $('msg1').cloneNode();
  137.     link.removeAttribute('id');
  138.  
  139.     var img = document.createElement('img');
  140.     img.setAttribute('src', marker.cache);
  141.     var x;
  142.     var y;
  143.     if (marker.width>marker.height) {
  144.         x = 160;
  145.         y = Math.ceil(marker.height * x / marker.width);
  146.     } else {
  147.         y = 160;
  148.         x = Math.ceil(marker.width * y / marker.height);
  149.     }
  150.     img.style.width    = x + 'px';
  151.     img.style.height= y + 'px';
  152.  
  153.     link.appendChild(img);
  154.  
  155.     var msg = document.createElement('div');
  156.     msg.style.textAlign = 'center';
  157.     msg.appendChild(link);
  158.  
  159.     if (!marker.broken) setBigImg(id);
  160.  
  161.     return msg;
  162. }
  163.  
  164. function setBigImg(id) {
  165.     var marker = $marker[id];
  166.  
  167.     var img = $('bigImg');
  168.     img.removeAttribute('src');
  169.     img.setAttribute('src', marker.cache);
  170.     var x;
  171.     var y;
  172.     if (marker.width>marker.height) {
  173.         x = 550;
  174.         y = Math.ceil(marker.height * x / marker.width);
  175.     } else {
  176.         y = 550;
  177.         x = Math.ceil(marker.width * y / marker.height);
  178.     }
  179.     img.style.width    = x + 'px';
  180.     img.style.height= y + 'px';
  181.     img.style.top    = (558 - y -10)/2 + 'px';
  182.     img.style.left    = (784 - x -10)/2 + 'px';
  183.  
  184.     $select = id;
  185. }
  186.  
  187. function msgClick() {
  188.     $('big').style.display = 'block';
  189. }
  190.  
  191. function bigClick() {
  192.     $('big').style.display = 'none';
  193.     $('thumb_'+$select).focus();
  194. }
  195.  
  196. function thumbClick(_this) {
  197.     var id = parseInt(_this.id.split('thumb_')[1]);
  198.     GEvent.trigger($marker[id].gmarker, 'click');
  199. }
  200. function thumbOver(_this) {
  201.     var id = parseInt(_this.id.split('thumb_')[1]);
  202.     var elem = $('thumbAlt');
  203.     elem.innerHTML = $marker[id].path;
  204.     if ($marker[id].broken) elem.innerHTML+= '<br/>' + $message.broken;
  205.     elem.style.visibility = 'visible';
  206. }
  207. function thumbOut() {
  208.     var elem = $('thumbAlt');
  209.     elem.style.visibility = 'hidden';
  210. }
  211. function thumbMove() {
  212.     var elem = $('thumbAlt');
  213.     elem.style.left = window.event.clientX + 10;
  214.     elem.style.top = window.event.clientY + 10;
  215. }
  216.  
  217. function mapWheel() {
  218.     if (GBrowserIsCompatible()) $gmap.setZoom($gmap.getZoom() + ((window.event.wheelDelta>0) ? 1 : -1));
  219. }
  220.