整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

HTML5实现的迷宫地图随机生成器

多小朋友喜欢用笔在纸上画线进行走迷宫游戏。

比如下图这种迷宫:从标注了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>

Marker轨迹回放

慧景区AR导览手绘地图小程序系统开发源码搭建需要以下步骤:

1. 确定系统需求和功能:了解智慧景区AR导览手绘地图小程序系统的需求和功能,包括地图绘制、AR导览、用户交互、数据管理等。

2. 选择开发平台和工具:选择适合的编程语言、开发框架、数据库和云服务提供商等,搭建开发环境。

3. 设计系统架构:根据需求和功能设计系统架构,包括数据库设计、系统模块划分、接口设计等。

4. 开发前端界面:使用HTML、CSS、JavaScript等前端技术,开发手绘地图和小程序界面,实现地图绘制、AR导览等功能。

5. 开发后端接口:使用后端编程语言和框架,开发与前端界面的交互接口,处理用户请求、管理数据等。

6. 集成AR技术:集成AR技术实现真实世界与虚拟元素的互动,为游客提供更好的导览体验。

7. 测试系统:对搭建完成的系统进行全面测试,确保系统的稳定性和功能性,解决测试过程中出现的问题。

8. 上线运营:完成测试后,将系统部署到云服务器上,进行上线运营,收集用户反馈并进行优化。

需要注意的是,智慧景区AR导览手绘地图小程序系统开发需要一定的技术能力和经验,建议选择专业的开发团队或公司进行开发。同时,需要考虑到系统的安全性和数据保护,确保系统的稳定性和可靠性。

(此处已添加小程序,请到客户端查看)