view map.js @ 171:b874aae3e75f gmap2

Cleanups.
author Matti Hamalainen <ccr@tnsp.org>
date Tue, 11 Mar 2014 20:48:17 +0200
parents fb98e644b80c
children c62f0cf2bf16
line wrap: on
line source

// $Id: map.js 2404 2009-12-24 20:01:32Z jeskko $

var pmap;
var pmapCanvas;
var proj;

var pmapTileSize = 256;
var pmapTileOrig = pmapTileSize / 2.0;
var pmapTilePxPerDeg = pmapTileSize / 360.0;
var pmapTilePxPerRad = pmapTileSize / (2.0 * Math.PI);


function pmapMinMax(vval, vmin, vmax)
{
  return Math.min(Math.max(vval, vmin), vmax);
}


function pmapLatLngToMapCoords(latLng)
{
  msiny = pmapMinMax(Math.sin((latLng.lat() * Math.PI) / 180.0), -0.9999, 0.9999);

  px = latLng.lng() * pmapTilePxPerDeg;
  py = 0.5 * Math.log((1 + msiny) / (1 - msiny)) * - pmapTilePxPerRad;

  return new google.maps.Point(Math.round((px * pmapTileOrig + 1) / 2), Math.round((py * pmapTileOrig + 1) / 2));
}


function CanvasProjectionOverlay() {}
CanvasProjectionOverlay.prototype = new google.maps.OverlayView();
CanvasProjectionOverlay.prototype.constructor = CanvasProjectionOverlay;
CanvasProjectionOverlay.prototype.onAdd = function(){};
CanvasProjectionOverlay.prototype.draw = function(){};
CanvasProjectionOverlay.prototype.onRemove = function(){};


function pmapInitializeMap()
{
  // Initialize custom imagemap with our tiles
  var pmapBatMap = new google.maps.ImageMapType(
  {
    getTileUrl: function(coord, zoom)
    {
      return "tiles/"+ zoom +"/"+ coord.y +"/"+ coord.x +".png";
    },

    tileSize: new google.maps.Size(pmapTileSize, pmapTileSize),
    maxZoom: 10,
    minZoom: 3,
    radius: 1738000,
    name: 'BatMap'
  });

  // Create map controller object
  pmap = new google.maps.Map(document.getElementById("map"),
  {
    zoom: 3,
    center: new google.maps.LatLng(-15, 10),

    streetViewControl: false,
    draggableCursor: 'crosshair',
    draggingCursor: 'pointer',
    mapTypeControl: false,
    scaleControl: false,
    rotateControl: false,
    overviewMapControl: false,
  });

  pmap.mapTypes.set('BatMap', pmapBatMap);
  pmap.setMapTypeId('BatMap');

  pmapCanvas = new CanvasProjectionOverlay();
  pmapCanvas.setMap(pmap);

  google.maps.event.addListener(pmap, "mousemove", pmapCoordinateListener);

  pmapInitializeIcons();
  pmapInitializeMarkers();
  pmapInitializeNav();
}


//
// Listener for updating coordinates display
//
function pmapCoordinateListener(point)
{
  var p = pmapLatLngToMapCoords(point.latLng);
  var tx = p.x;
  var ty = p.y;

  var cx = tx;
  var cy = ty;
  var cont = "Deep Sea";
  
  for (i = 0; i < pmapContinents.length; i++)
  {
    var c = pmapContinents[i];
    if (c != null && tx > c[1] && tx < c[3] && ty > c[2] && ty < c[4])
    {
      cont = c[0];
      cx = tx - c[1];
      cy = ty - c[2];
      break;
    }
  }

  document.getElementById("xcoord").innerHTML = cx;
  document.getElementById("ycoord").innerHTML = cy;
  document.getElementById("continent").innerHTML = cont;
}