Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <!DOCTYPE html>
- <html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
- <meta name="viewport" content="width=device-width, initial-scale=0.7, maximum-scale=0.7">
- <!--<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
- <meta http-equiv="Pragma" content="no-cache" />
- <meta http-equiv="Expires" content="0" />-->
- <style type="text/css">
- html, body { height: 100%; margin: 0; padding: 0; }
- #map { height: 100%; }
- #filter {
- position: absolute; right: 14px; top: 14px; width: 28px; height: 28px;
- box-shadow: rgba(0, 0, 0, 0.298039) 0px 1px 4px -1px; border-radius: 2px;
- cursor: pointer; background-color: white; text-align: center; vertical-align: middle;
- }
- #filterdialog {
- position: absolute; display: inline-block; height: 75%; overflow-y: scroll;
- overflow-x: hidden; right: 14px; top: 42px; padding: 3px;
- box-shadow: rgba(0, 0, 0, 0.298039) 0px 1px 4px -1px; border-radius: 2px;
- cursor: pointer; background-color: white; font-family: Roboto,Arial,sans-serif;
- font-size: 14px; font-weight: 400; display: none;
- }
- </style>
- </head>
- <body>
- <div id="map"></div>
- <div id="filter" title="Filter" onclick="showFilterDialog();"><img src="icons/map/ic_filter_list_black_24px.svg" onmouseover="this.style.opacity=0.5;" onmouseout="this.style.opacity=1;"></div>
- <div id="filterdialog"></div>
- <script type="text/javascript">
- /////////////////////////////////////////////////////////////////////
- var pokdats = {};
- var map;
- var markers = [];
- var spawns = [];
- var pokenames;
- var pokefilter;
- var LAT_C;
- var LNG_C;
- var LANGUAGE;
- var scalesize;
- var loadids;
- var timenow;
- var infowindow;
- var iconSize;
- var iconOrigin;
- var iconAnchor;
- var iconScaledSize;
- var timelefttext;
- var timehiddentext;
- /////////////////////////////////////////////////////////////////////
- function getFile(path, asynch, callback) {
- var xhr = new XMLHttpRequest();
- xhr.open("GET", path, asynch);
- xhr.onload = function (e) {
- if (xhr.readyState === 4 && xhr.status === 200) {
- callback(xhr.responseText);
- }
- };
- xhr.send(null);
- }
- /////////////////////////////////////////////////////////////////////
- function refreshData() {
- for (var fileN=0;fileN<loadids.length;fileN++){
- timenow=Math.round((new Date()).getTime() / 1000);
- filenow="data".concat(loadids[fileN].toString(),".json");
- getFile(filenow, false, function(fileData) {
- pokdats = JSON.parse(fileData);
- // Add updated markers
- for (var i = 0; i < pokdats.length; i++) {
- var p = pokdats[i];
- var timeleft = p[4]-timenow;
- if (timeleft>0) {
- if (p.length == 6)
- var newaddinfo = p[5];
- else
- var newaddinfo = 0;
- var cIcon= {
- url: "icons/" + p[0] + ".png",
- size: iconSize,
- origin: iconOrigin,
- anchor: iconAnchor,
- scaledSize: iconScaledSize
- };
- var s = 0;
- while (s< spawns.length && spawns[s]!=p[1]){s++;}
- if (s< spawns.length){
- if (markers[s].validTill != p[4]) {
- if (markers[s].validTill ==0 || markers[s].id != p[0]) {
- markers[s].id=p[0];
- markers[s].icon = cIcon;
- markers[s].setOpacity(1.0);
- markers[s].setMap(map);
- markers[s].addinfo=newaddinfo;
- }
- markers[s].validTill = p[4];
- }
- }else{
- var marker = new google.maps.Marker({
- map: map,
- position: {lat: p[2], lng: p[3]},
- optimized: false,
- id: p[0],
- validTill: p[4],
- spawnID: p[1],
- icon: cIcon,
- addinfo: newaddinfo
- });
- marker.addListener('click', function() {
- infowindow.close();
- infowindow.setContent(this.infotext);
- infowindow.open(map, this);
- });
- marker.addListener('dblclick', function() {
- if (this.getOpacity()==0.5)
- this.setOpacity(1);
- else
- this.setOpacity(0.5);
- });
- markers.push(marker);
- spawns.push(p[1]);
- }
- }
- }
- // Update info text of markers and clear void ones
- for (var i = 0; i < markers.length; i++) {
- if (markers[i].validTill != 0) {
- var timeleft = markers[i].validTill-timenow;
- if (timeleft <= 0) {
- markers[i].setMap(null);
- markers[i].validTill = 0;
- }else
- if (markers[i].addinfo == 1 && timeleft > 1800) {
- timeleft -= 1800;
- markers[i].infotext= "<b>"+pokenames[markers[i].id]+"</b><br>"+ timelefttext + Math.floor(timeleft/60) + "m " + (timeleft%60) + "s<br>" + timereturntext;
- }else if (markers[i].addinfo == 1 && timeleft > 900) {
- timeleft -= 900;
- markers[i].infotext= "<b>"+pokenames[markers[i].id]+"</b><br><font color=\"#a9a9a9\">" + timehiddentext + Math.floor(timeleft/60) + "m " + (timeleft%60) + "s</font>";
- }else{
- markers[i].infotext= "<b>"+pokenames[markers[i].id]+"</b><br>"+ timelefttext + Math.floor(timeleft/60) + "m " + (timeleft%60) + "s";
- }
- markers[i].setVisible(!filteredOut(markers[i].id));
- }
- }
- });
- }
- anchor=infowindow.get('anchor');
- if (anchor!=undefined&&anchor!==null) {
- infowindow.setContent(anchor.infotext);
- }
- }
- /////////////////////////////////////////////////////////////////////
- function initMap() {
- map = new google.maps.Map(document.getElementById('map'), {
- center: {lat: LAT_C, lng: LNG_C},
- zoom: 15,
- disableDoubleClickZoom: true
- });
- getFile(LANGUAGE+".json", false, function(tnames) {
- pokenames=JSON.parse(tnames);
- });
- // Load filter from Cookie
- pokefilter = getCookie("pokefilter");
- document.getElementById("filterdialog").style.display="none";
- for (i=1;i<152;i++) {
- // Generate the filter interface
- var div = document.createElement("div");
- //div.style.width="100%";
- div.innerHTML=pokenames[i];
- if (filteredOut(i)) {
- div.style.opacity=0.5;
- }
- else {
- div.style.opacity=1;
- }
- div.id="filter"+i;
- var callback = function() {
- if (this.style.opacity<1) {
- this.style.opacity=1;
- }
- else {
- this.style.opacity=0.5;
- }
- updateFilter();
- }
- div.addEventListener("click", callback, false)
- document.getElementById("filterdialog").appendChild(div);
- }
- if (LANGUAGE=="german") {
- timelefttext = "Zeit übrig: ";
- timehiddentext = "Versteckt für: ";
- timereturntext = "(danach in 15m zurück)";
- }else if (LANGUAGE=="english") {
- timelefttext = "Time left: ";
- timehiddentext = "Hidden for: ";
- timereturntext = "(then back in 15m)";
- }
- infowindow = new google.maps.InfoWindow();
- iconSize = new google.maps.Size(scalesize, scalesize);
- iconOrigin= new google.maps.Point(0, 0);
- iconAnchor= new google.maps.Point(Math.round(scalesize/2), Math.round(scalesize/2));
- iconScaledSize= new google.maps.Size(scalesize, scalesize);
- refreshData();
- setInterval(refreshData, 5000);
- google.maps.event.addListener(map, 'click', function(event) {
- infowindow.close()
- });
- }
- function initSite() {
- getFile("websettings.json", false, function(tsettings) {
- var settings=JSON.parse(tsettings);
- LAT_C=settings['html_coords']['lat'];
- LNG_C=settings['html_coords']['lng'];
- LANGUAGE=settings['language'];
- scalesize = Math.ceil(72*settings['icon_scalefactor']);
- loadids = settings['load_ids'];
- document.getElementsByName("viewport").content = "width=device-width, initial-scale="+settings['mobile_scalefactor'].toString()+", maximum-scale="+settings['mobile_scalefactor'].toString();
- var script = document.createElement("script");
- script.src = "https://maps.googleapis.com/maps/api/js?key="+settings['api_key']+"&libraries=drawing&callback=initMap";
- script.async = true;
- script.defer = true;
- document.body.appendChild(script);
- });
- }
- function setCookie() {
- var cookieString = ""
- if (pokefilter){
- cookieString = "pokefilter="+pokefilter+";";
- }
- document.cookie = cookieString;
- }
- function getCookie(name) {
- var cookieString = "; " + document.cookie;
- var chunks = cookieString.split("; " + name + "=");
- if (chunks.length == 2) {
- return chunks.pop().split(";").shift();
- }
- }
- function showFilterDialog() {
- var dialog=document.getElementById("filterdialog");
- if (dialog.style.display=="none") {
- dialog.style.display="inherit";
- }
- else {
- dialog.style.display="none";
- };
- }
- function filteredOut(id) {
- var filtertest=","+pokefilter+",";
- return (filtertest.indexOf(","+id+",") > -1)
- }
- function updateFilter() {
- var tmpstring = "";
- for (i=1;i<152;i++) {
- if (document.getElementById("filter"+i).style.opacity<1) {
- tmpstring=tmpstring+","+i
- }
- }
- if (tmpstring) {
- pokefilter=tmpstring.substring(1);
- }
- setCookie();
- for (i=0; i<markers.length; i++) {
- markers[i].setVisible(!filteredOut(markers[i].id));
- }
- }
- initSite()
- </script>
- </body></html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement