World Map opdateret

Nyheder fra holdet bag crafters.dk samt events.
Post Reply
User avatar
julemand101
Posts: 3327
Joined: 06 Nov 2010, 19:12
Location: Brabrand
Contact:

World Map opdateret

Post by julemand101 »

Jeg vil lige hurtigt informere at vores World Map nu er blevet opdateret. Med opdateringen er der dog nogle få ændringer:

- Vi generer nu hele mappet da det tager ca. 30 min. at lave mappet.
- Det er ikke længere muligt at få en liste over alle der er online. Jeg arbejder på at løse dette men forvent ikke vi får den feature tilbage.
- Hver person der er online markeres med en lille karakter med det Minecraft skin som personen har valgt.

Det er planen at der også vil blive genereret map for de andre maps vi kører på serveren men jeg mangler stadig at få automatiseret processen. Det er ikke til at sige hvornår det sker.

Hvis der er problemer med at vise mappet så skriv venligst hvilken browser i bruger og jeg vil forsøge at se om det er muligt at rette problemet.

Link til de dovne: http://www.crafters.dk/worldmap
Administrator og grundlægger af http://www.archlinux.dk - Dansk Arch Linux Community.
User avatar
atlem
Posts: 251
Joined: 12 Dec 2010, 15:39
Location: norway

Re: World Map opdateret

Post by atlem »

was this the only script you nedet to inplant ?

Code: Select all

<script type="text/javascript" src="player_markers.js"></script>

<!DOCTYPE html>

<html>

<head>

<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />

<link rel="stylesheet" href="style.css" type="text/css" />

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>

<script type="text/javascript" src="player_markers.js"></script>

<script type="text/javascript"

    src="http://maps.google.com/maps/api/js?sensor=false">

</script>

<script type="text/javascript">

  var config = {

    path:        '.',

    fileExt:     'png',

    tileSize:     384,

    defaultZoom:  0,

    B:            6,

    T:            1,

    maxZoom:      10

  };

  

  var markerData=[

//  {"msg": "center of chunk (0,0) at sea level", "y": 64, "x": 8, "z": 8}

  ]



  

  // our custom projection maps Latitude to Y, and Longitude to X as normal,

  // but it maps the range [0.0, 1.0] to [0, tileSize] in both directions

  // so it is easier to position markers, etc. based on their position

  // (find their position in the lowest-zoom image, and divide by tileSize)

  function MCMapProjection() {

    this.inverseTileSize = 1.0 / config.tileSize;

  }

  

  MCMapProjection.prototype.fromLatLngToPoint = function(latLng) {

    var x = latLng.lng() * config.tileSize;

    var y = latLng.lat() * config.tileSize;

    return new google.maps.Point(x, y);

  };



  MCMapProjection.prototype.fromPointToLatLng = function(point) {

    var lng = point.x * this.inverseTileSize;

    var lat = point.y * this.inverseTileSize;

    return new google.maps.LatLng(lat, lng);

  };



  // pigmap lat/long converter

  // this function takes its arguments in the *same order* as the previous

  //  Overviewer version--minecraft X, minecraft Y, minecraft Z--so callers

  //  do not need to be changed

  // ...however, this one does not rename the variables, so what we call "y"

  //  here is also called "y" in both minecraft and pigmap

  // (the pigmap docs write coords in X,Z,Y order, so unfortunately

  //  confusion is still possible, but at least the *names* are the same)

  function fromWorldToLatLng(x, y, z)

  {

    // the width and height of all the highest-zoom tiles combined, inverted

    var perPixel = 1.0 / (config.tileSize * Math.pow(2, config.maxZoom));

    

    var B = config.B;

    var T = config.T;

    

    // fail in a conspicuous way if tileSize doesn't match B and T

    if (config.tileSize != 64*B*T) {

        console.log("Tile size does not match 64*B*T");

        return new google.maps.LatLng(0.5, 0.5);

    }

    // the center of block [0,0,0] is at [2B, 64BT-17B] in the tile [tiles/2, tiles/2]

    var lng = 0.5 + 2*B * perPixel;

    var lat = 0.5 + (config.tileSize - 17*B) * perPixel;

    

    // each block on X adds [2B,-B]

    lng += 2*B * x * perPixel;

    lat += -B * x * perPixel;

    

    // each block on Y adds [0,-2B]

    lat += -2*B * y * perPixel;

    

    // each block on Z adds [2B,B]

    lng += 2*B * z * perPixel;

    lat += B * z * perPixel;



    return new google.maps.LatLng(lat, lng);

   }

  

  var MCMapOptions = {

    getTileUrl: function(tile, zoom) {

      var url = config.path;

      if(tile.x < 0 || tile.x >= Math.pow(2, zoom) || tile.y < 0 || tile.y >= Math.pow(2, zoom)) {

        url += '/blank';

      } else if(zoom == 0) {

        url += '/base';

      } else {

        for(var z = zoom - 1; z >= 0; --z) {

          var x = Math.floor(tile.x / Math.pow(2, z)) % 2;

          var y = Math.floor(tile.y / Math.pow(2, z)) % 2;

          url += '/' + (x + 2 * y);

        }

      }

      url = url + '.' + config.fileExt;

      return(url);

    },

    tileSize: new google.maps.Size(config.tileSize, config.tileSize),

    maxZoom:  config.maxZoom,

    minZoom:  0,

    isPng:    !(config.fileExt.match(/^png$/i) == null)

  };

  

  var MCMapType = new google.maps.ImageMapType(MCMapOptions);

  MCMapType.name = "MC Map";

  MCMapType.alt = "Minecraft Map";

  MCMapType.projection = new MCMapProjection();

  

  function CoordMapType() {

  }

  

  function CoordMapType(tileSize) {

    this.tileSize = tileSize;

  }

  

  CoordMapType.prototype.getTile = function(coord, zoom, ownerDocument) {

    var div = ownerDocument.createElement('DIV');

    div.innerHTML = "(" + coord.x + ", " + coord.y + ", " + zoom + ")";

    div.innerHTML += "<br />";

    div.innerHTML += MCMapOptions.getTileUrl(coord, zoom);

    div.style.width = this.tileSize.width + 'px';

    div.style.height = this.tileSize.height + 'px';

    div.style.fontSize = '10';

    div.style.borderStyle = 'solid';

    div.style.borderWidth = '1px';

    div.style.borderColor = '#AAAAAA';

    return div;

  };

  

  var map;

  

  var markersInit = false;



  function initMarkers() {

    if (markersInit) { return; }

    

    markersInit = true;



    for (i in markerData) {

      var item = markerData[i];

      

      var converted = fromWorldToLatLng(item.x, item.y, item.z);

       var marker = new google.maps.Marker({

        position: converted,

        map: map,

        title: item.msg, 



        });



   }

  }

  

  function initialize() {

    var mapOptions = {

      zoom: config.defaultZoom,

      center: new google.maps.LatLng(0.5, 0.5),

      navigationControl: true,

      scaleControl: false,

      mapTypeControl: false,

      streetViewControl: false,

      mapTypeId: 'mcmap'

    };

    map = new google.maps.Map(document.getElementById("mcmap"), mapOptions);

    

       

    // Now attach the coordinate map type to the map's registry

    map.mapTypes.set('mcmap', MCMapType);

  

    // We can now set the map to use the 'coordinate' map type

    map.setMapTypeId('mcmap');

    

    initMarkers();



  }

</script>

</head>

<body onload="initialize()">

  <div id="mcmap" style="width:100%; height:100%"></div>

</body>

</html>
User avatar
julemand101
Posts: 3327
Joined: 06 Nov 2010, 19:12
Location: Brabrand
Contact:

Re: World Map opdateret

Post by julemand101 »

1. Du må gerne bruge Code tagget her på forummet når du poster sådan en omgang.

2. Jeg er ikke helt sikker på jeg forstår dig? Der ligger lidt flere scripts og filer bag end kun dette. Fx skal jeg tilføje den fil der hedder player_markers.js. Men læs dokumentationen til MapMarkers:
http://forums.bukkit.org/threads/info-m ... 2-733.843/

Til at lave mappet bruger jeg pigmap som du finder her:
https://github.com/equalpants/pigmap

Pigmap er ikke særligt nemt at få til at virke. Jeg vil tro det nemmeste er at bruge det på en Linux maskine da du skal compile det selv. De har en god README her:
https://github.com/equalpants/pigmap/blob/master/README
Administrator og grundlægger af http://www.archlinux.dk - Dansk Arch Linux Community.
User avatar
atlem
Posts: 251
Joined: 12 Dec 2010, 15:39
Location: norway

Re: World Map opdateret

Post by atlem »

yes i have all the map markers from the download inside.
but when i add the skript

Code: Select all

<script type="text/javascript" src="player_markers.js"></script>
the map dosent show,
this is the owerview map
http://map.mycraft.me/Map.html
Post Reply