Simple demo game-like thing showing how to use the accelerometer to control
a vector feature on a map. git-svn-id: http://svn.openlayers.org/trunk/openlayers@11549 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
@@ -16,6 +16,7 @@ OpenLayers/Control/Attribution.js
|
||||
OpenLayers/Control/SelectFeature.js
|
||||
OpenLayers/Layer/Vector.js
|
||||
OpenLayers/Renderer/SVG.js
|
||||
OpenLayers/Renderer/Canvas.js
|
||||
OpenLayers/Format/GeoJSON.js
|
||||
|
||||
[exclude]
|
||||
|
||||
80
examples/game-accel-ball.html
Normal file
80
examples/game-accel-ball.html
Normal file
@@ -0,0 +1,80 @@
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;" />
|
||||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||
<title>OpenLayers Game: Bounce Ball</title>
|
||||
<link rel="stylesheet" href="../theme/default/style.css" type="text/css" />
|
||||
<link rel="stylesheet" href="style.css" type="text/css" />
|
||||
<script src="../lib/OpenLayers.js?mobile"></script>
|
||||
<style type="text/css">
|
||||
html, body { height: 100%; }
|
||||
#shortdesc { display: none; }
|
||||
#tags { display: none; }
|
||||
</style>
|
||||
|
||||
<script type="text/javascript">
|
||||
var map, vlayer;
|
||||
function adjustLocation(delta, feature) {
|
||||
feature.geometry.move(delta.x, delta.y);
|
||||
var me = map.maxExtent;
|
||||
var rad = 6;
|
||||
if (feature.geometry.x > (me.right - rad)) {
|
||||
feature.geometry.x = me.right - rad;
|
||||
} else if (feature.geometry.x < (me.left+rad)) {
|
||||
feature.geometry.x = me.left+rad;
|
||||
}
|
||||
if (feature.geometry.y > (me.top-rad)) {
|
||||
feature.geometry.y = me.top-rad;
|
||||
} else if (feature.geometry.y < (me.bottom+rad)) {
|
||||
feature.geometry.y = me.bottom+rad;
|
||||
}
|
||||
vlayer.drawFeature(feature);
|
||||
}
|
||||
function init() {
|
||||
map = new OpenLayers.Map( 'map',
|
||||
{
|
||||
'maxExtent': new OpenLayers.Bounds(0, 0, $("map").clientWidth, $("map").clientHeight),
|
||||
controls: [],
|
||||
maxResolution: 'auto'}
|
||||
);
|
||||
var layer = new OpenLayers.Layer("",
|
||||
{isBaseLayer: true} );
|
||||
map.addLayer(layer);
|
||||
map.zoomToMaxExtent();
|
||||
vlayer = new OpenLayers.Layer.Vector();
|
||||
var feature = new OpenLayers.Feature.Vector(
|
||||
new OpenLayers.Geometry.Point(map.getCenter().lon, map.getCenter().lat));
|
||||
vlayer.addFeatures(feature);
|
||||
map.addLayer(vlayer);
|
||||
if (window.DeviceMotionEvent) {
|
||||
window.addEventListener('devicemotion', function (evt) {
|
||||
var delta = null;
|
||||
if (typeof(evt.accelerationIncludingGravity) != 'undefined') {
|
||||
delta = {
|
||||
'x': evt.accelerationIncludingGravity.x * 3,
|
||||
'y': evt.accelerationIncludingGravity.y * 3,
|
||||
'z': evt.accelerationIncludingGravity.z
|
||||
}
|
||||
}
|
||||
adjustLocation(delta, feature);
|
||||
}, true);
|
||||
} else {
|
||||
alert("This demo does not work on your browser.");
|
||||
}
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body onload="init()">
|
||||
<h1 id="title">Accelerometer Example</h1>
|
||||
<div id="tags">
|
||||
mobile, game
|
||||
</div>
|
||||
<div id="shortdesc">Simple acceleration demo; roll a vector feature around
|
||||
on a map. (Only tested on iOS 4.)</div>
|
||||
|
||||
<div id="map" width="100%" height="100%" style="background-color: grey"></div>
|
||||
<div id="docs">
|
||||
Demo works best when device is locked in portrait mode.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user