多小朋友喜欢用笔在纸上画线进行走迷宫游戏。
比如下图这种迷宫:从标注了S(Start-起点)的位置出发,走到终点E(End)就算成功。
那么,如何随机生成上图这种迷宫地图呢?
我在github上部署了一个迷宫地图生成应用:http://i042416.github.io/FioriODataTestTool2014/WebContent/027_generator.html
每次进入这个应用或者按F5刷新,就会随机生成一张新的迷宫地图:
这个应用仅仅需要使用到两个JavaScript脚本文件和一个html文件。
html文件的源代码:
<!doctype html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="-1" />
<meta http-equiv="Cache-Control" content="no-cache" />
<meta charset="utf-8">
<title>Maze Demo</title>
<!-- <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no, target-densitydpi=device-dpi" /> -->
<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no" />
<meta name="apple-mobile-web-app-title" content="H5Game">
<meta name="apple-touch-fullscreen" content="yes" >
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name='format-detection' content='telephone=no'>
<meta name="screen-orientation" content="portrait">
<meta name="full-screen" content="yes">
<meta name="x5-fullscreen" content="true">
<meta name="360-fullscreen" content="true">
<script type="text/javascript" src="maze//Maze.js"></script>
<script type="text/javascript" src="maze/main.js"></script>
<script type="text/javascript">
</script>
<style>
#toolbar {
position: absolute;
padding:2px;
top:0;
right:0;
width:180px;
}
#toolbar button {
padding:10px;
font-size:16px;
margin:5px;
}
</style>
</head>
<body>
<div id="container" class="splash">
<canvas id="canvas"></canvas>
<div id="info"></div>
</div>
</body>
</html>
迷宫的轮廓模型生成逻辑位于代码Maze.js里:
"use strict";
var Maze = function(options) {
for (var p in options) {
this[p] = options[p];
}
}
先看效果,再看源码~
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>创建地图</title>
<style type="text/css">
html, body {
height: 100%;
margin: 0px;
padding: 0px;
}
#container {
width: 800px;
height: 600px;
}
</style>
</head>
<script charset="utf-8" src="https://wemapvis.map.qq.com/api/gljs?v=1.exp&key=OB4BZ-D4W3U-B7VVO-4PJWW-6TKDJ-WPB77"></script>
<body onload="initMap()">
<div id="container"></div>
<script type="text/javascript">
function initMap() {
//初始化地图
var map = new TMap.Map("container", {
// 设置地图缩放级别
zoom: 11,
rotation: 353,
pitch: 73,
// 地图底图,BaseMap目前只支持矢量底图 (VectorBaseMap) 、卫星底图 (SatelliteBaseMap) 、路况底图 (TrafficBaseMap)
// 可以使用数组形式实现多种底图叠加
// 默认为 VectorBaseMap ,
baseMap:{
//type: "vector"
type: "satellite"
//type: "traffic"
},
// 3D / 2D 显示模式控制
viewMode:'2D',
//设置地图中心点坐标
center: new TMap.LatLng(37.87, 112.53),
adcode: 110101 // 市区县级行政区划代码
});
}
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>单击事件获取经纬度</title>
<style type="text/css">
html, body {
height: 100%;
margin: 0px;
padding: 0px;
}
#container {
width: 800px;
height: 600px;
}
</style>
</head>
<script charset="utf-8" src="https://wemapvis.map.qq.com/api/gljs?v=1.exp&key=OB4BZ-D4W3U-B7VVO-4PJWW-6TKDJ-WPB77"></script>
<body onload="initMap()">
<div id="container"></div>
<script type="text/javascript">
function initMap() {
//初始化地图
var map = new TMap.Map("container", {
// 设置地图缩放级别
zoom: 11,
rotation: 353,
pitch: 73,
baseMap:{
//type: "vector"
type: "satellite"
//type: "traffic"
},
// 3D / 2D 显示模式控制
viewMode:'2D',
//设置地图中心点坐标
center: new TMap.LatLng(37.87, 112.53),
adcode: 110101 // 市区县级行政区划代码
});
//初始化marker
var marker = new TMap.MultiMarker({
map: map,
styles: {
// 点标记样式
marker: new TMap.MarkerStyle({
width: 20, // 样式宽
height: 30, // 样式高
anchor: { x: 10, y: 30 }, // 描点位置
src: 'https://mapapi.qq.com/web/lbs/javascriptGL/demo/img/markerDefault.png', // 标记路径
}),
},
geometries: [
// 点标记数据数组
{
// 标记位置(经度,纬度,高度)
position: new TMap.LatLng(37.87, 112.53, 134),
},
],
});
//绑定点击事件
map.on("click",function(evt){
var lat = evt.latLng.getLat().toFixed(6);
var lng = evt.latLng.getLng().toFixed(6);
console.log(lat + "," + lng);
})
}
</script>
</body>
</html>
慧景区AR导览手绘地图小程序系统开发源码搭建需要以下步骤:
1. 确定系统需求和功能:了解智慧景区AR导览手绘地图小程序系统的需求和功能,包括地图绘制、AR导览、用户交互、数据管理等。
2. 选择开发平台和工具:选择适合的编程语言、开发框架、数据库和云服务提供商等,搭建开发环境。
3. 设计系统架构:根据需求和功能设计系统架构,包括数据库设计、系统模块划分、接口设计等。
4. 开发前端界面:使用HTML、CSS、JavaScript等前端技术,开发手绘地图和小程序界面,实现地图绘制、AR导览等功能。
5. 开发后端接口:使用后端编程语言和框架,开发与前端界面的交互接口,处理用户请求、管理数据等。
6. 集成AR技术:集成AR技术实现真实世界与虚拟元素的互动,为游客提供更好的导览体验。
7. 测试系统:对搭建完成的系统进行全面测试,确保系统的稳定性和功能性,解决测试过程中出现的问题。
8. 上线运营:完成测试后,将系统部署到云服务器上,进行上线运营,收集用户反馈并进行优化。
需要注意的是,智慧景区AR导览手绘地图小程序系统开发需要一定的技术能力和经验,建议选择专业的开发团队或公司进行开发。同时,需要考虑到系统的安全性和数据保护,确保系统的稳定性和可靠性。
*请认真填写需求信息,我们会在24小时内与您取得联系。