Chee Leong Chow avatar Chee Leong Chow committed 5c865ae

Played with some python stuffs.

Comments (0)

Files changed (15)

 .settings
 .project
 go.sh
+*.pyc

mapgame/action.py

         temp['position'] = [i.x_pt,i.y_pt]
         output.append(temp)
     return output
+
+        
 application: mapgame
 version: 1
 runtime: python
-app_version: 1
+api_version: 1
 
 handlers:
-- url: /position
-  script: position.py
+- url: /
+  static_files: www/index.html
+  upload: www/(.*)
+
+- url: /favicon.ico
+  static_files: www/favicon.ico
+  upload: www/favicon.ico
+
+- url: /js
+  static_dir: www/js
+
+- url: /css
+  static_dir: www/css
+
+- url: /.*
+  script: main.py
+from google.appengine.api import users
+from google.appengine.ext import webapp
+from google.appengine.ext.webapp.util import run_wsgi_app
+
+import view
+
+class MainPage(webapp.RequestHandler):
+    def get(self):
+        user = users.get_current_user()
+
+        if user:
+            self.response.headers["Content-Type"] = 'text/plain'
+            self.response.out.write(users.create_logout_url('/'))
+        else:
+            self.redirect(users.create_login_url(self.request.uri))
+
+application = webapp.WSGIApplication(
+    [('/', MainPage),
+     ('/auth', view.CheckAuth)],
+    debug=True)
+
+def main():
+    run_wsgi_app(application)
+
+if __name__ == '__main__':
+    main()

mapgame/models.py

 class Player(db.Model):
     player = db.UserProperty()
     hp = db.IntegerProperty()
-    profession = db.StringProperly()
+    profession = db.StringProperty()
 
 class Location(db.Model):
     x_pt = db.FloatProperty()
     y_pt = db.FloatProperty()
     player = db.ReferenceProperty(Player)
 
-

mapgame/position.py

 from google.appengine.ext import webapp
-from google.appengine.api import user
+from google.appengine.api import users
 from google.appengine.ext.webapp.util import run_wsgi_app
 from google.appengine.ext.db import GeoPt
 from django.utils import simplejson as json
         )
         self.response.out.write(json.loads(output))     
         
-def approximate_post(x_pt1,x_pt2,query1,query2)
+def approximate_post(x_pt1,x_pt2,query1,query2):
     output = []
     nl = db.Query(Location)
     nl.filter(query1,x_pt1)
+from google.appengine.api import users
+from google.appengine.ext import webapp
+from django.utils import simplejson
+
+class CheckAuth(webapp.RequestHandler):
+    def get(self):
+        auth_data = dict(user=None,
+                         link=None)
+        user = users.get_current_user()
+
+        if user:
+            auth_data["user"] = user.email()
+            auth_data["link"] = users.create_logout_url("/")
+        else:
+            auth_data["link"] = users.create_login_url("/")
+
+        self.response.headers["Content-Type"] = "application/json"
+        self.response.out.write(simplejson.dumps(auth_data))
+

mapgame/www/bk.html

+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8" />
+    <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
+    <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true"></script>
+    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
+    <script type="text/javascript" src="http://google-maps-utility-library-v3.googlecode.com/svn/tags/markermanager/1.0/src/markermanager.js"></script> 
+    <link href="http://fonts.googleapis.com/css?family=Limelight&v1" rel="stylesheet" type="text/css" />
+    <link href="http://fonts.googleapis.com/css?family=Metrophobic&v1" rel="stylesheet" type="text/css" />
+    
+    <style type="text/css">
+    html {
+        height: 100%;
+    }
+    h1.title {
+        font-size: 18px;
+        font-family: 'Metrophobic', arial, serif; 
+    }
+    body {
+        height: 100%;
+        margin: 0px; padding: 0px; font-family: 'Metrophobic', arial, serif;
+    }
+    #map_panel { 
+        height: 100% 
+    }
+    #right_panel {
+        height: 100%; position: fixed; top: 0; right: 0; width:200px;
+    }
+    #top_panel {
+        height: 30px; position: fixed; left: 80px; bottom: 0; z-index: 10; width:100%
+    }
+    </style>
+    <script type="text/javascript">
+$(function() {
+      // (3.088659288677284, 101.70668882751465)
+    var latlng = new google.maps.LatLng(3.088,  101.70);
+    var mapOptions = {
+      zoom: 8,
+      center: latlng,
+      mapTypeId: google.maps.MapTypeId.ROADMAP,
+      streetViewControl: false
+    };
+    
+    var map = new google.maps.Map(document.getElementById("map_panel"), mapOptions);
+        
+    var mgr = new MarkerManager(map, {trackMarkers: true, maxZoom: 15});
+    var right_panel_width = 200;
+    
+    var mgr2 = new MarkerManager(map, {trackMarkers: true, maxZoom: 15});
+    
+    $(window).bind('resize', function(){
+        $('#map_panel').width($(window).width() - right_panel_width);
+    });
+    $('#map_panel').width($(window).width() - right_panel_width);
+    var mylocation = null;
+    
+    function array_to_markers(array) {
+        var markers = [];
+        
+        for (var i = 0; i < array.length; i++) {
+            var details = array[i];
+            markers[i] = new google.maps.Marker({
+              title: details.name,
+              position: new google.maps.LatLng(
+                  details.location[0], details.location[1]),
+              clickable: false,
+              draggable: false,
+              flat: true
+            });
+            
+          }
+      
+        return markers;
+    }
+    function array_to_markers2(array) {
+        var markers = [];
+        
+        for (var i = 0; i < array.length; i++) {
+            var details = array[i];
+            markers[i] = new google.maps.Marker({
+              title: details.name,
+              position: new google.maps.LatLng(
+                  details.location[0], details.location[1]),
+              clickable: false,
+              draggable: false,
+              flat: true
+            });
+            
+          }
+      
+        return markers;
+    }
+    
+    navigator.geolocation.getCurrentPosition(function(location) {
+        var latlng = new google.maps.LatLng(location.coords.latitude, location.coords.longitude);
+        
+        loc = [ {'name': 'My Location', 'location': [location.coords.latitude, location.coords.longitude]}];
+        if (!mylocation) {
+            var a = array_to_markers(loc);
+            google.maps.event.addListener(mgr, 'loaded', function() {
+                // Have to wait for mgr to be ready, or else we can't draw
+                mgr.clearMarkers();
+                mgr.addMarkers(a , 0, 15);
+                mgr.refresh();
+            });
+        }
+        mylocation = latlng;
+    });
+    var marker_location = null;
+    var update_interval = 1000; // milliseconds
+    var update_markers = function() {
+        //console.debug('ping');
+        $.ajax({
+            url: '/position/',
+            dataType: 'json',
+            success: function(data) {
+                var d = [];
+                //console.debug(data.Location);
+                /*
+                if (data.Location[0] > 3) {
+                    var lat = data.Location[1];
+                    data.Location[1] = data.Location[0];
+                    data.Location[0] = lat;
+                }*/
+                d.push({'name': data.Name, 'location': data.Location});
+                var b = array_to_markers2(d);
+                marker_location = data.Location;
+                mgr2.clearMarkers();
+                mgr2.addMarkers(b, 0, 15);
+                mgr2.refresh();
+                
+            }
+        });
+        setTimeout(update_markers, update_interval);
+    }
+    setTimeout(update_markers, update_interval);
+    
+    $('#current_location').click(function() {
+        if (mylocation) {
+            map.panTo(mylocation);
+        }
+        
+        return false;
+    });
+    $('#goto_malaysia').click(function() {
+        var latlng = new google.maps.LatLng(3.088,  101.70);
+        map.panTo(latlng);
+        return false;
+    });
+    $('#goto_marker').click(function() {
+        if (!marker_location) {
+            return false;
+        }
+        var latlng = new google.maps.LatLng(marker_location[0],  marker_location[1]);
+        //console.debug(marker_location);
+        map.panTo(latlng);
+        return false;
+    });
+});
+</script>
+    
+</head>
+<body >
+<div id='top_panel'>
+</div>
+
+<div id="map_panel"></div>
+
+<div id='right_panel'>
+    <h1 class='title'>Gtug App Engine Go</h1>
+    <p>Debugging stuff goes here.</p>
+    <ul>
+        <li><a href='#' id='goto_malaysia'>Zoom Malaysia</a></li>
+        <li><a href='#' id='current_location'>Go to current Location</a></li>
+        <li><a href='#' id='goto_marker'>Go to marker position</a></li>
+    </ul>
+</div>
+
+</body>
+</html>

mapgame/www/css/960.css

+/*
+  960 Grid System ~ Core CSS.
+  Learn more ~ http://960.gs/
+
+  Licensed under GPL and MIT.
+*/
+
+/*
+  Forces backgrounds to span full width,
+  even if there is horizontal scrolling.
+  Increase this if your layout is wider.
+
+  Note: IE6 works fine without this fix.
+*/
+
+body {
+  min-width: 960px;
+}
+
+/* `Container
+----------------------------------------------------------------------------------------------------*/
+
+.container_12,
+.container_16 {
+  margin-left: auto;
+  margin-right: auto;
+  width: 960px;
+}
+
+/* `Grid >> Global
+----------------------------------------------------------------------------------------------------*/
+
+.grid_1,
+.grid_2,
+.grid_3,
+.grid_4,
+.grid_5,
+.grid_6,
+.grid_7,
+.grid_8,
+.grid_9,
+.grid_10,
+.grid_11,
+.grid_12,
+.grid_13,
+.grid_14,
+.grid_15,
+.grid_16 {
+  display: inline;
+  float: left;
+  margin-left: 10px;
+  margin-right: 10px;
+}
+
+.push_1, .pull_1,
+.push_2, .pull_2,
+.push_3, .pull_3,
+.push_4, .pull_4,
+.push_5, .pull_5,
+.push_6, .pull_6,
+.push_7, .pull_7,
+.push_8, .pull_8,
+.push_9, .pull_9,
+.push_10, .pull_10,
+.push_11, .pull_11,
+.push_12, .pull_12,
+.push_13, .pull_13,
+.push_14, .pull_14,
+.push_15, .pull_15 {
+  position: relative;
+}
+
+.container_12 .grid_3,
+.container_16 .grid_4 {
+  width: 220px;
+}
+
+.container_12 .grid_6,
+.container_16 .grid_8 {
+  width: 460px;
+}
+
+.container_12 .grid_9,
+.container_16 .grid_12 {
+  width: 700px;
+}
+
+.container_12 .grid_12,
+.container_16 .grid_16 {
+  width: 940px;
+}
+
+/* `Grid >> Children (Alpha ~ First, Omega ~ Last)
+----------------------------------------------------------------------------------------------------*/
+
+.alpha {
+  margin-left: 0;
+}
+
+.omega {
+  margin-right: 0;
+}
+
+/* `Grid >> 12 Columns
+----------------------------------------------------------------------------------------------------*/
+
+.container_12 .grid_1 {
+  width: 60px;
+}
+
+.container_12 .grid_2 {
+  width: 140px;
+}
+
+.container_12 .grid_4 {
+  width: 300px;
+}
+
+.container_12 .grid_5 {
+  width: 380px;
+}
+
+.container_12 .grid_7 {
+  width: 540px;
+}
+
+.container_12 .grid_8 {
+  width: 620px;
+}
+
+.container_12 .grid_10 {
+  width: 780px;
+}
+
+.container_12 .grid_11 {
+  width: 860px;
+}
+
+/* `Grid >> 16 Columns
+----------------------------------------------------------------------------------------------------*/
+
+.container_16 .grid_1 {
+  width: 40px;
+}
+
+.container_16 .grid_2 {
+  width: 100px;
+}
+
+.container_16 .grid_3 {
+  width: 160px;
+}
+
+.container_16 .grid_5 {
+  width: 280px;
+}
+
+.container_16 .grid_6 {
+  width: 340px;
+}
+
+.container_16 .grid_7 {
+  width: 400px;
+}
+
+.container_16 .grid_9 {
+  width: 520px;
+}
+
+.container_16 .grid_10 {
+  width: 580px;
+}
+
+.container_16 .grid_11 {
+  width: 640px;
+}
+
+.container_16 .grid_13 {
+  width: 760px;
+}
+
+.container_16 .grid_14 {
+  width: 820px;
+}
+
+.container_16 .grid_15 {
+  width: 880px;
+}
+
+/* `Prefix Extra Space >> Global
+----------------------------------------------------------------------------------------------------*/
+
+.container_12 .prefix_3,
+.container_16 .prefix_4 {
+  padding-left: 240px;
+}
+
+.container_12 .prefix_6,
+.container_16 .prefix_8 {
+  padding-left: 480px;
+}
+
+.container_12 .prefix_9,
+.container_16 .prefix_12 {
+  padding-left: 720px;
+}
+
+/* `Prefix Extra Space >> 12 Columns
+----------------------------------------------------------------------------------------------------*/
+
+.container_12 .prefix_1 {
+  padding-left: 80px;
+}
+
+.container_12 .prefix_2 {
+  padding-left: 160px;
+}
+
+.container_12 .prefix_4 {
+  padding-left: 320px;
+}
+
+.container_12 .prefix_5 {
+  padding-left: 400px;
+}
+
+.container_12 .prefix_7 {
+  padding-left: 560px;
+}
+
+.container_12 .prefix_8 {
+  padding-left: 640px;
+}
+
+.container_12 .prefix_10 {
+  padding-left: 800px;
+}
+
+.container_12 .prefix_11 {
+  padding-left: 880px;
+}
+
+/* `Prefix Extra Space >> 16 Columns
+----------------------------------------------------------------------------------------------------*/
+
+.container_16 .prefix_1 {
+  padding-left: 60px;
+}
+
+.container_16 .prefix_2 {
+  padding-left: 120px;
+}
+
+.container_16 .prefix_3 {
+  padding-left: 180px;
+}
+
+.container_16 .prefix_5 {
+  padding-left: 300px;
+}
+
+.container_16 .prefix_6 {
+  padding-left: 360px;
+}
+
+.container_16 .prefix_7 {
+  padding-left: 420px;
+}
+
+.container_16 .prefix_9 {
+  padding-left: 540px;
+}
+
+.container_16 .prefix_10 {
+  padding-left: 600px;
+}
+
+.container_16 .prefix_11 {
+  padding-left: 660px;
+}
+
+.container_16 .prefix_13 {
+  padding-left: 780px;
+}
+
+.container_16 .prefix_14 {
+  padding-left: 840px;
+}
+
+.container_16 .prefix_15 {
+  padding-left: 900px;
+}
+
+/* `Suffix Extra Space >> Global
+----------------------------------------------------------------------------------------------------*/
+
+.container_12 .suffix_3,
+.container_16 .suffix_4 {
+  padding-right: 240px;
+}
+
+.container_12 .suffix_6,
+.container_16 .suffix_8 {
+  padding-right: 480px;
+}
+
+.container_12 .suffix_9,
+.container_16 .suffix_12 {
+  padding-right: 720px;
+}
+
+/* `Suffix Extra Space >> 12 Columns
+----------------------------------------------------------------------------------------------------*/
+
+.container_12 .suffix_1 {
+  padding-right: 80px;
+}
+
+.container_12 .suffix_2 {
+  padding-right: 160px;
+}
+
+.container_12 .suffix_4 {
+  padding-right: 320px;
+}
+
+.container_12 .suffix_5 {
+  padding-right: 400px;
+}
+
+.container_12 .suffix_7 {
+  padding-right: 560px;
+}
+
+.container_12 .suffix_8 {
+  padding-right: 640px;
+}
+
+.container_12 .suffix_10 {
+  padding-right: 800px;
+}
+
+.container_12 .suffix_11 {
+  padding-right: 880px;
+}
+
+/* `Suffix Extra Space >> 16 Columns
+----------------------------------------------------------------------------------------------------*/
+
+.container_16 .suffix_1 {
+  padding-right: 60px;
+}
+
+.container_16 .suffix_2 {
+  padding-right: 120px;
+}
+
+.container_16 .suffix_3 {
+  padding-right: 180px;
+}
+
+.container_16 .suffix_5 {
+  padding-right: 300px;
+}
+
+.container_16 .suffix_6 {
+  padding-right: 360px;
+}
+
+.container_16 .suffix_7 {
+  padding-right: 420px;
+}
+
+.container_16 .suffix_9 {
+  padding-right: 540px;
+}
+
+.container_16 .suffix_10 {
+  padding-right: 600px;
+}
+
+.container_16 .suffix_11 {
+  padding-right: 660px;
+}
+
+.container_16 .suffix_13 {
+  padding-right: 780px;
+}
+
+.container_16 .suffix_14 {
+  padding-right: 840px;
+}
+
+.container_16 .suffix_15 {
+  padding-right: 900px;
+}
+
+/* `Push Space >> Global
+----------------------------------------------------------------------------------------------------*/
+
+.container_12 .push_3,
+.container_16 .push_4 {
+  left: 240px;
+}
+
+.container_12 .push_6,
+.container_16 .push_8 {
+  left: 480px;
+}
+
+.container_12 .push_9,
+.container_16 .push_12 {
+  left: 720px;
+}
+
+/* `Push Space >> 12 Columns
+----------------------------------------------------------------------------------------------------*/
+
+.container_12 .push_1 {
+  left: 80px;
+}
+
+.container_12 .push_2 {
+  left: 160px;
+}
+
+.container_12 .push_4 {
+  left: 320px;
+}
+
+.container_12 .push_5 {
+  left: 400px;
+}
+
+.container_12 .push_7 {
+  left: 560px;
+}
+
+.container_12 .push_8 {
+  left: 640px;
+}
+
+.container_12 .push_10 {
+  left: 800px;
+}
+
+.container_12 .push_11 {
+  left: 880px;
+}
+
+/* `Push Space >> 16 Columns
+----------------------------------------------------------------------------------------------------*/
+
+.container_16 .push_1 {
+  left: 60px;
+}
+
+.container_16 .push_2 {
+  left: 120px;
+}
+
+.container_16 .push_3 {
+  left: 180px;
+}
+
+.container_16 .push_5 {
+  left: 300px;
+}
+
+.container_16 .push_6 {
+  left: 360px;
+}
+
+.container_16 .push_7 {
+  left: 420px;
+}
+
+.container_16 .push_9 {
+  left: 540px;
+}
+
+.container_16 .push_10 {
+  left: 600px;
+}
+
+.container_16 .push_11 {
+  left: 660px;
+}
+
+.container_16 .push_13 {
+  left: 780px;
+}
+
+.container_16 .push_14 {
+  left: 840px;
+}
+
+.container_16 .push_15 {
+  left: 900px;
+}
+
+/* `Pull Space >> Global
+----------------------------------------------------------------------------------------------------*/
+
+.container_12 .pull_3,
+.container_16 .pull_4 {
+  left: -240px;
+}
+
+.container_12 .pull_6,
+.container_16 .pull_8 {
+  left: -480px;
+}
+
+.container_12 .pull_9,
+.container_16 .pull_12 {
+  left: -720px;
+}
+
+/* `Pull Space >> 12 Columns
+----------------------------------------------------------------------------------------------------*/
+
+.container_12 .pull_1 {
+  left: -80px;
+}
+
+.container_12 .pull_2 {
+  left: -160px;
+}
+
+.container_12 .pull_4 {
+  left: -320px;
+}
+
+.container_12 .pull_5 {
+  left: -400px;
+}
+
+.container_12 .pull_7 {
+  left: -560px;
+}
+
+.container_12 .pull_8 {
+  left: -640px;
+}
+
+.container_12 .pull_10 {
+  left: -800px;
+}
+
+.container_12 .pull_11 {
+  left: -880px;
+}
+
+/* `Pull Space >> 16 Columns
+----------------------------------------------------------------------------------------------------*/
+
+.container_16 .pull_1 {
+  left: -60px;
+}
+
+.container_16 .pull_2 {
+  left: -120px;
+}
+
+.container_16 .pull_3 {
+  left: -180px;
+}
+
+.container_16 .pull_5 {
+  left: -300px;
+}
+
+.container_16 .pull_6 {
+  left: -360px;
+}
+
+.container_16 .pull_7 {
+  left: -420px;
+}
+
+.container_16 .pull_9 {
+  left: -540px;
+}
+
+.container_16 .pull_10 {
+  left: -600px;
+}
+
+.container_16 .pull_11 {
+  left: -660px;
+}
+
+.container_16 .pull_13 {
+  left: -780px;
+}
+
+.container_16 .pull_14 {
+  left: -840px;
+}
+
+.container_16 .pull_15 {
+  left: -900px;
+}
+
+/* `Clear Floated Elements
+----------------------------------------------------------------------------------------------------*/
+
+/* http://sonspring.com/journal/clearing-floats */
+
+.clear {
+  clear: both;
+  display: block;
+  overflow: hidden;
+  visibility: hidden;
+  width: 0;
+  height: 0;
+}
+
+/* http://www.yuiblog.com/blog/2010/09/27/clearfix-reloaded-overflowhidden-demystified */
+
+.clearfix:before,
+.clearfix:after,
+.container_12:before,
+.container_12:after,
+.container_16:before,
+.container_16:after {
+  content: '.';
+  display: block;
+  overflow: hidden;
+  visibility: hidden;
+  font-size: 0;
+  line-height: 0;
+  width: 0;
+  height: 0;
+}
+
+.clearfix:after,
+.container_12:after,
+.container_16:after {
+  clear: both;
+}
+
+/*
+  The following zoom:1 rule is specifically for IE6 + IE7.
+  Move to separate stylesheet if invalid CSS is a problem.
+*/
+
+.clearfix,
+.container_12,
+.container_16 {
+  zoom: 1;
+}

mapgame/www/css/reset.css

+/* `XHTML, HTML4, HTML5 Reset
+----------------------------------------------------------------------------------------------------*/
+
+a,
+abbr,
+acronym,
+address,
+applet,
+article,
+aside,
+audio,
+b,
+big,
+blockquote,
+body,
+canvas,
+caption,
+center,
+cite,
+code,
+dd,
+del,
+details,
+dfn,
+dialog,
+div,
+dl,
+dt,
+em,
+embed,
+fieldset,
+figcaption,
+figure,
+font,
+footer,
+form,
+h1,
+h2,
+h3,
+h4,
+h5,
+h6,
+header,
+hgroup,
+hr,
+html,
+i,
+iframe,
+img,
+ins,
+kbd,
+label,
+legend,
+li,
+mark,
+menu,
+meter,
+nav,
+object,
+ol,
+output,
+p,
+pre,
+progress,
+q,
+rp,
+rt,
+ruby,
+s,
+samp,
+section,
+small,
+span,
+strike,
+strong,
+sub,
+summary,
+sup,
+table,
+tbody,
+td,
+tfoot,
+th,
+thead,
+time,
+tr,
+tt,
+u,
+ul,
+var,
+video,
+xmp {
+  border: 0;
+  margin: 0;
+  padding: 0;
+  font-size: 100%;
+}
+
+html,
+body {
+  height: 100%;
+}
+
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+menu,
+nav,
+section {
+/*
+  Override the default (display: inline) for
+  browsers that do not recognize HTML5 tags.
+
+  IE8 (and lower) requires a shiv:
+  http://ejohn.org/blog/html5-shiv
+*/
+  display: block;
+}
+
+b,
+strong {
+/*
+  Makes browsers agree.
+  IE + Opera = font-weight: bold.
+  Gecko + WebKit = font-weight: bolder.
+*/
+  font-weight: bold;
+}
+
+img {
+  color: transparent;
+  font-size: 0;
+  vertical-align: middle;
+/*
+  For IE.
+  http://css-tricks.com/ie-fix-bicubic-scaling-for-images
+*/
+  -ms-interpolation-mode: bicubic;
+}
+
+li {
+/*
+  For IE6 + IE7.
+*/
+  display: list-item;
+}
+
+table {
+  border-collapse: collapse;
+  border-spacing: 0;
+}
+
+th,
+td,
+caption {
+  font-weight: normal;
+  vertical-align: top;
+  text-align: left;
+}
+
+svg {
+/*
+  For IE9.
+*/
+  overflow: hidden;
+}

mapgame/www/css/style.css

+div#top {
+    text-align: right;
+}

mapgame/www/css/text.css

+/*
+  960 Grid System ~ Text CSS.
+  Learn more ~ http://960.gs/
+
+  Licensed under GPL and MIT.
+*/
+
+/* `Basic HTML
+----------------------------------------------------------------------------------------------------*/
+
+body {
+  font: 13px/1.5 'Helvetica Neue', Arial, 'Liberation Sans', FreeSans, sans-serif;
+}
+
+pre,
+code {
+  font-family: 'DejaVu Sans Mono', Monaco, Consolas, monospace;
+}
+
+hr {
+  border: 0 #ccc solid;
+  border-top-width: 1px;
+  clear: both;
+  height: 0;
+}
+
+/* `Headings
+----------------------------------------------------------------------------------------------------*/
+
+h1 {
+  font-size: 25px;
+}
+
+h2 {
+  font-size: 23px;
+}
+
+h3 {
+  font-size: 21px;
+}
+
+h4 {
+  font-size: 19px;
+}
+
+h5 {
+  font-size: 17px;
+}
+
+h6 {
+  font-size: 15px;
+}
+
+/* `Spacing
+----------------------------------------------------------------------------------------------------*/
+
+ol {
+  list-style: decimal;
+}
+
+ul {
+  list-style: disc;
+}
+
+li {
+  margin-left: 30px;
+}
+
+p,
+dl,
+hr,
+h1,
+h2,
+h3,
+h4,
+h5,
+h6,
+ol,
+ul,
+pre,
+table,
+address,
+fieldset,
+figure {
+  margin-bottom: 20px;
+}
Add a comment to this file

mapgame/www/favicon.ico

Added
New image

mapgame/www/index.html

+<!DOCTYPE html>
+<html>
+  <head>
+    <meta charset="utf-8" />
+    <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
+    <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true"></script>
+    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
+    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.13/jquery-ui.min.js"></script>
+    <script type="text/javascript" src="http://google-maps-utility-library-v3.googlecode.com/svn/tags/markermanager/1.0/src/markermanager.js"></script> 
+    <script type="text/javascript" src="/js/features.js"></script>
+    <link rel="stylesheet" href="/css/reset.css" type="text/css" media="screen" />
+    <link rel="stylesheet" href="/css/text.css" type="text/css" media="screen" />
+    <link rel="stylesheet" href="/css/960.css" type="text/css" media="screen" />
+    <link rel="stylesheet" href="/css/style.css" type="text/css" media="screen" />
+  </head>
+  <body>
+    <div id="header" class="container_12 clearfix">
+      <div id="top" class="grid_12 alpha omega"></div>
+      <div id="panel" class="grid_12 alpha omega" style="display:none;">
+      </div>
+    </div>
+      <div id="map">
+      </div>
+
+    <div id="content" class="container_12 clearfix">
+      <div id="control" class="grid_4 omega">
+        
+      </div>
+    </div>
+    <div id="footer" class="container_12 clearfix">
+      footer
+    </div>
+  </body>
+</html>

mapgame/www/js/features.js

+var checkLogin = function () {
+    $.ajax({
+        type: "GET",
+        url: "/auth",
+        success: function(data) {
+            if (data.user != null) {
+                $("<span id='user_email'/>").text(data.user).appendTo("div#top");
+                $("<a>logout</a>").attr("href", data.link).appendTo("div#top");
+                executePlan();
+            } else {
+                $("<a>login</a>").attr("href", data.link).appendTo("div#top");
+                window.location = data.link;
+            }
+        },
+        error: function() {
+            console.log('error');
+        }
+    });
+}
+
+var executePlan = function () {
+    $("div#panel").show();
+    getMap();
+}
+
+var getMap = function () {
+    var lat = 3.088;
+    var lng = 101.70;
+    var latlng = new google.maps.LatLng(lat, lng);
+    var mapOptions = {
+        zoom: 8,
+        center: latlng,
+        mapTypeId: google.maps.MapTypeId.ROADMAP,
+        streetViewControl: false,
+    };
+    var map = new google.maps.Map(document.getElementById("map"),
+                                  mapOptions);
+    var mgr = new MarkerManager(map, {trackMarkers: true,
+                                      maxZoom: 15});
+    var mgr2 = new MarkerManager(map, {trackMarkers: true,
+                                       maxZoom: 15});
+    var mylocation = null;
+
+    function array_to_markers(array) {
+        var markers = [];
+        for (var i=0; i<array.length; i++) {
+            var details = array[i];
+            markers[i] = new google.maps.Marker({
+                title: details.name,
+                position: new googl.map.LatLng(details.location[0],
+                                               details.location[1]),
+                clickable: false,
+                draggable: false,
+                flat: true,
+            });
+        }
+        return markers;
+    }
+
+    navigator.geolocation.getCurrentPosition(function (location) {
+        var latlng = new google.maps.LatLng(location.coords.latitude,
+                                            location.coords.longitude);
+        var loc = [{'name': 'My Location',
+                    'location': [location.coords.latitude,
+                                 location.coords.longitude]
+                   }];
+        if (!mylocation) {
+            var a = array_to_markers(loc);
+            google.maps.event.addListener(mgr, 'loaded', function () {
+                mgr.clearMarkers();
+                mgr.addMarkers(a, 0, 15);
+                mgr.refresh();
+            });
+        }
+        mylocation = latlng;
+    });
+}
+
+$(document).ready(function() {
+    checkLogin();
+});
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.