├── .browserslistrc ├── .gitignore ├── README.md ├── babel.config.js ├── custom_components └── ha-baidu-map │ ├── __init__.py │ ├── dist │ ├── css │ │ ├── app.50c5513d.css │ │ └── chunk-vendors.6a85daba.css │ ├── favicon.ico │ ├── img │ │ ├── home.png │ │ ├── icons │ │ │ ├── android-chrome-192x192.png │ │ │ ├── android-chrome-512x512.png │ │ │ ├── apple-touch-icon-120x120.png │ │ │ ├── apple-touch-icon-152x152.png │ │ │ ├── apple-touch-icon-180x180.png │ │ │ ├── apple-touch-icon-60x60.png │ │ │ ├── apple-touch-icon-76x76.png │ │ │ ├── apple-touch-icon.png │ │ │ ├── favicon-16x16.png │ │ │ ├── favicon-32x32.png │ │ │ ├── msapplication-icon-144x144.png │ │ │ ├── mstile-150x150.png │ │ │ └── safari-pinned-tab.svg │ │ └── my.png │ ├── index.html │ ├── js │ │ ├── NoSleep.min.js │ │ ├── app.5f7fe2b6.js │ │ ├── chunk-2d2295d7.2dbc5a87.js │ │ └── chunk-vendors.e05899bb.js │ ├── manifest.json │ ├── precache-manifest.762d28af755e2375f9197589e2d4ee59.js │ ├── robots.txt │ └── service-worker.js │ └── manifest.json ├── dist ├── baidu-map.js ├── config.json ├── css │ ├── app.50c5513d.css │ └── chunk-vendors.e2e2feb5.css ├── favicon.ico ├── img │ ├── home.png │ ├── icons │ │ ├── android-chrome-192x192.png │ │ ├── android-chrome-512x512.png │ │ ├── apple-touch-icon-120x120.png │ │ ├── apple-touch-icon-152x152.png │ │ ├── apple-touch-icon-180x180.png │ │ ├── apple-touch-icon-60x60.png │ │ ├── apple-touch-icon-76x76.png │ │ ├── apple-touch-icon.png │ │ ├── favicon-16x16.png │ │ ├── favicon-32x32.png │ │ ├── msapplication-icon-144x144.png │ │ ├── mstile-150x150.png │ │ └── safari-pinned-tab.svg │ └── my.png ├── index.html ├── js │ ├── NoSleep.min.js │ ├── app.9ceacd07.js │ ├── chunk-2d2295d7.1c08ca79.js │ └── chunk-vendors.064fc1a5.js ├── manifest.json ├── precache-manifest.16ee1e19229ecb83b12bc4ee7d0a0b22.js ├── robots.txt └── service-worker.js ├── package-lock.json ├── package.json ├── postcss.config.js ├── public ├── favicon.ico ├── img │ ├── home.png │ ├── icons │ │ ├── android-chrome-192x192.png │ │ ├── android-chrome-512x512.png │ │ ├── apple-touch-icon-120x120.png │ │ ├── apple-touch-icon-152x152.png │ │ ├── apple-touch-icon-180x180.png │ │ ├── apple-touch-icon-60x60.png │ │ ├── apple-touch-icon-76x76.png │ │ ├── apple-touch-icon.png │ │ ├── favicon-16x16.png │ │ ├── favicon-32x32.png │ │ ├── msapplication-icon-144x144.png │ │ ├── mstile-150x150.png │ │ └── safari-pinned-tab.svg │ └── my.png ├── index.html ├── js │ └── NoSleep.min.js ├── manifest.json └── robots.txt ├── screenshots ├── 1.png └── 2.png ├── src ├── App.vue ├── assets │ └── logo.png ├── components │ ├── GPSLogger.vue │ ├── LogInfo.vue │ └── MyOverlay.vue ├── main.js ├── registerServiceWorker.js ├── router.js └── views │ └── Home.vue └── vue.config.js /.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | 4 | # local env files 5 | .env.local 6 | .env.*.local 7 | 8 | # Log files 9 | npm-debug.log* 10 | yarn-debug.log* 11 | yarn-error.log* 12 | 13 | # Editor directories and files 14 | .idea 15 | .vscode 16 | *.suo 17 | *.ntvs* 18 | *.njsproj 19 | *.sln 20 | *.sw? 21 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 百度地图HASS插件 2 | 3 | 实现了位置查看功能 4 | 5 | > dist:对应的www下自定义的静态网页文件 6 | 7 | ## 如何使用 8 | 9 | > 安装 10 | 11 | 1.(建议)使用[HACS安装](https://github.com/custom-components/hacs) 12 | 13 | 在HACS里输入:https://github.com/shaonianzhentan/ha-baidu-map 即可安装成功(类型选择Integration) 14 | 15 | 2.自定义安装 16 | 17 | 将本项目custom_components里的内容,放到HASS的custom_components文件夹中 18 | 19 | > 后台插件配置 20 | 21 | 然后在configuration.yaml中配置以下内容 22 | ``` 23 | ha-baidu-map: 24 | 25 | ``` 26 | 27 | # 请一定要在HomeAssistant里使用,不然没啥用 28 | 29 | ## 界面欣赏 30 | 31 | #### 选择设备 32 | ![选择设备](https://raw.githubusercontent.com/shaonianzhentan/lovelace-baidu-map/master/screenshots/1.png) 33 | 34 | #### 设置定位Webhook 35 | ![设置定位Webhook](https://raw.githubusercontent.com/shaonianzhentan/lovelace-baidu-map/master/screenshots/2.png) 36 | 37 | 38 | ## 功能 39 | 40 | - 查看位置 41 | 42 | ## 更新说明 43 | 44 | ### V1.0.0(2019.10.12) 45 | - 全新配置,安装更简单 46 | - 删除定位相关功能 47 | 48 | ### V0.1.1(2019.07.10) 49 | - 在上报位置信息时,带上了手机电量信息 50 | - 修复了百度定位不准的问题,换成了GPS定位 51 | 52 | ### V0.1.0(2019.07.09) 53 | - 加入百度定位功能 54 | - 加入GPSLogger设置,可以上报位置了 55 | 56 | ### V0.0.1(2019.07.07) 57 | - 初始化项目 58 | 59 | ## 其他说明 60 | 61 | - 并没有全面测试,所以可能有BUG 62 | - 如有问题请直接在 Issues 中提,或者您发现问题并有非常好的解决方案,欢迎 PR 63 | -------------------------------------------------------------------------------- /babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/app' 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /custom_components/ha-baidu-map/__init__.py: -------------------------------------------------------------------------------- 1 | import json 2 | import os 3 | import logging 4 | import voluptuous as vol 5 | import requests 6 | import time 7 | 8 | from homeassistant.helpers import config_validation as cv 9 | from homeassistant.helpers.event import track_time_interval 10 | from homeassistant.components.http import HomeAssistantView 11 | from aiohttp import web 12 | from aiohttp.web import FileResponse 13 | from typing import Optional 14 | from datetime import timedelta 15 | from homeassistant.helpers.state import AsyncTrackStates 16 | from urllib.request import urlopen 17 | 18 | _LOGGER = logging.getLogger(__name__) 19 | # 日志记录 20 | _DEBUG = False 21 | 22 | 23 | def _log(*arg): 24 | if _DEBUG: 25 | _LOGGER.info(*arg) 26 | 27 | 28 | DOMAIN = 'ha-baidu-map' 29 | _DOMAIN = DOMAIN.replace('-', '_') 30 | 31 | _hass = None 32 | 33 | # 34 | # 读取所有静态文件 35 | # 36 | # 37 | allpath = [] 38 | allname = [] 39 | 40 | 41 | def getallfile(path): 42 | allfilelist = os.listdir(path) 43 | # 遍历该文件夹下的所有目录或者文件 44 | for file in allfilelist: 45 | filepath = os.path.join(path, file) 46 | # 如果是文件夹,递归调用函数 47 | if os.path.isdir(filepath): 48 | getallfile(filepath) 49 | # 如果不是文件夹,保存文件路径及文件名 50 | elif os.path.isfile(filepath): 51 | allpath.append(filepath) 52 | allname.append(file) 53 | return allpath, allname 54 | 55 | 56 | __dirname = os.path.dirname(__file__) 57 | files, names = getallfile(__dirname+'/dist') 58 | 59 | extra_urls = [] 60 | for file in files: 61 | extra_urls.append( 62 | '/' + DOMAIN + file.replace(__dirname, '').replace('\\', '/')) 63 | 64 | # 网关控制 65 | 66 | 67 | class HassGateView(HomeAssistantView): 68 | """View to handle Configuration requests.""" 69 | 70 | url = '/' + DOMAIN 71 | name = DOMAIN 72 | extra_urls = extra_urls 73 | requires_auth = False 74 | 75 | async def get(self, request): 76 | # _LOGGER.info(request.rel_url.raw_path) 77 | return FileResponse(os.path.dirname(__file__) + request.rel_url.raw_path.replace(self.url, '')) 78 | 79 | async def post(self, request): 80 | """Update state of entity.""" 81 | response = await request.json() 82 | return self.json(response) 83 | 84 | 85 | # 安装 86 | def setup(hass, config): 87 | _LOGGER.info(''' 88 | ------------------------------------------------------------------- 89 | ha-baidu-map百度地图插件【作者QQ:635147515】 90 | 91 | 版本:1.0.0 92 | 93 | 这是一个百度地图的HomeAssistant插件 94 | 95 | https://github.com/shaonianzhentan/ha-baidu-map 96 | -------------------------------------------------------------------''') 97 | global _hass 98 | _hass = hass 99 | _hass.http.register_view(HassGateView) 100 | # 添加到侧边栏 101 | hass.components.frontend.async_register_built_in_panel( 102 | "iframe", 103 | "百度地图", 104 | "mdi:map-marker", 105 | _DOMAIN, 106 | {"url": "/"+DOMAIN+"/dist/index.html"}, 107 | require_admin=True, 108 | ) 109 | return True 110 | -------------------------------------------------------------------------------- /custom_components/ha-baidu-map/dist/css/app.50c5513d.css: -------------------------------------------------------------------------------- 1 | ul{list-style:none;padding:0;margin:0}.BMap_Marker img:not([src*="./img/home.png"]){width:100%;border-radius:50%;background:#fff;border:1px solid #03a9f4!important} -------------------------------------------------------------------------------- /custom_components/ha-baidu-map/dist/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaonianzhentan/ha-baidu-map/a93a097e2e49960e616f82cefc1934dc9b4ab38f/custom_components/ha-baidu-map/dist/favicon.ico -------------------------------------------------------------------------------- /custom_components/ha-baidu-map/dist/img/home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaonianzhentan/ha-baidu-map/a93a097e2e49960e616f82cefc1934dc9b4ab38f/custom_components/ha-baidu-map/dist/img/home.png -------------------------------------------------------------------------------- /custom_components/ha-baidu-map/dist/img/icons/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaonianzhentan/ha-baidu-map/a93a097e2e49960e616f82cefc1934dc9b4ab38f/custom_components/ha-baidu-map/dist/img/icons/android-chrome-192x192.png -------------------------------------------------------------------------------- /custom_components/ha-baidu-map/dist/img/icons/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaonianzhentan/ha-baidu-map/a93a097e2e49960e616f82cefc1934dc9b4ab38f/custom_components/ha-baidu-map/dist/img/icons/android-chrome-512x512.png -------------------------------------------------------------------------------- /custom_components/ha-baidu-map/dist/img/icons/apple-touch-icon-120x120.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaonianzhentan/ha-baidu-map/a93a097e2e49960e616f82cefc1934dc9b4ab38f/custom_components/ha-baidu-map/dist/img/icons/apple-touch-icon-120x120.png -------------------------------------------------------------------------------- /custom_components/ha-baidu-map/dist/img/icons/apple-touch-icon-152x152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaonianzhentan/ha-baidu-map/a93a097e2e49960e616f82cefc1934dc9b4ab38f/custom_components/ha-baidu-map/dist/img/icons/apple-touch-icon-152x152.png -------------------------------------------------------------------------------- /custom_components/ha-baidu-map/dist/img/icons/apple-touch-icon-180x180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaonianzhentan/ha-baidu-map/a93a097e2e49960e616f82cefc1934dc9b4ab38f/custom_components/ha-baidu-map/dist/img/icons/apple-touch-icon-180x180.png -------------------------------------------------------------------------------- /custom_components/ha-baidu-map/dist/img/icons/apple-touch-icon-60x60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaonianzhentan/ha-baidu-map/a93a097e2e49960e616f82cefc1934dc9b4ab38f/custom_components/ha-baidu-map/dist/img/icons/apple-touch-icon-60x60.png -------------------------------------------------------------------------------- /custom_components/ha-baidu-map/dist/img/icons/apple-touch-icon-76x76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaonianzhentan/ha-baidu-map/a93a097e2e49960e616f82cefc1934dc9b4ab38f/custom_components/ha-baidu-map/dist/img/icons/apple-touch-icon-76x76.png -------------------------------------------------------------------------------- /custom_components/ha-baidu-map/dist/img/icons/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaonianzhentan/ha-baidu-map/a93a097e2e49960e616f82cefc1934dc9b4ab38f/custom_components/ha-baidu-map/dist/img/icons/apple-touch-icon.png -------------------------------------------------------------------------------- /custom_components/ha-baidu-map/dist/img/icons/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaonianzhentan/ha-baidu-map/a93a097e2e49960e616f82cefc1934dc9b4ab38f/custom_components/ha-baidu-map/dist/img/icons/favicon-16x16.png -------------------------------------------------------------------------------- /custom_components/ha-baidu-map/dist/img/icons/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaonianzhentan/ha-baidu-map/a93a097e2e49960e616f82cefc1934dc9b4ab38f/custom_components/ha-baidu-map/dist/img/icons/favicon-32x32.png -------------------------------------------------------------------------------- /custom_components/ha-baidu-map/dist/img/icons/msapplication-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaonianzhentan/ha-baidu-map/a93a097e2e49960e616f82cefc1934dc9b4ab38f/custom_components/ha-baidu-map/dist/img/icons/msapplication-icon-144x144.png -------------------------------------------------------------------------------- /custom_components/ha-baidu-map/dist/img/icons/mstile-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaonianzhentan/ha-baidu-map/a93a097e2e49960e616f82cefc1934dc9b4ab38f/custom_components/ha-baidu-map/dist/img/icons/mstile-150x150.png -------------------------------------------------------------------------------- /custom_components/ha-baidu-map/dist/img/icons/safari-pinned-tab.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 8 | Created by potrace 1.11, written by Peter Selinger 2001-2013 9 | 10 | 12 | 148 | 149 | 150 | -------------------------------------------------------------------------------- /custom_components/ha-baidu-map/dist/img/my.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaonianzhentan/ha-baidu-map/a93a097e2e49960e616f82cefc1934dc9b4ab38f/custom_components/ha-baidu-map/dist/img/my.png -------------------------------------------------------------------------------- /custom_components/ha-baidu-map/dist/index.html: -------------------------------------------------------------------------------- 1 | 百度地图
-------------------------------------------------------------------------------- /custom_components/ha-baidu-map/dist/js/NoSleep.min.js: -------------------------------------------------------------------------------- 1 | /*! NoSleep.min.js v0.9.0 - git.io/vfn01 - Rich Tibbett - MIT license */ 2 | !function(A,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.NoSleep=e():A.NoSleep=e()}("undefined"!=typeof self?self:this,function(){return function(A){function e(B){if(o[B])return o[B].exports;var Q=o[B]={i:B,l:!1,exports:{}};return A[B].call(Q.exports,Q,Q.exports,e),Q.l=!0,Q.exports}var o={};return e.m=A,e.c=o,e.d=function(A,o,B){e.o(A,o)||Object.defineProperty(A,o,{configurable:!1,enumerable:!0,get:B})},e.n=function(A){var o=A&&A.__esModule?function(){return A.default}:function(){return A};return e.d(o,"a",o),o},e.o=function(A,e){return Object.prototype.hasOwnProperty.call(A,e)},e.p="",e(e.s=0)}([function(A,e,o){"use strict";function B(A,e){if(!(A instanceof e))throw new TypeError("Cannot call a class as a function")}var Q=function(){function A(A,e){for(var o=0;o.5&&(e.noSleepVideo.currentTime=Math.random())})}))}return Q(A,[{key:"_addSourceToVideo",value:function(A,e,o){var B=document.createElement("source");B.src=o,B.type="video/"+e,A.appendChild(B)}},{key:"enable",value:function(){E?(this.disable(),console.warn("\n NoSleep enabled for older iOS devices. This can interrupt\n active or long-running network requests from completing successfully.\n See https://github.com/richtr/NoSleep.js/issues/15 for more details.\n "),this.noSleepTimer=window.setInterval(function(){document.hidden||(window.location.href=window.location.href.split("#")[0],window.setTimeout(window.stop,0))},15e3)):this.noSleepVideo.play()}},{key:"disable",value:function(){E?this.noSleepTimer&&(console.warn("\n NoSleep now disabled for older iOS devices.\n "),window.clearInterval(this.noSleepTimer),this.noSleepTimer=null):this.noSleepVideo.pause()}}]),A}();A.exports=l},function(A,e,o){"use strict";A.exports={webm:"data:video/webm;base64,GkXfo0AgQoaBAUL3gQFC8oEEQvOBCEKCQAR3ZWJtQoeBAkKFgQIYU4BnQI0VSalmQCgq17FAAw9CQE2AQAZ3aGFtbXlXQUAGd2hhbW15RIlACECPQAAAAAAAFlSua0AxrkAu14EBY8WBAZyBACK1nEADdW5khkAFVl9WUDglhohAA1ZQOIOBAeBABrCBCLqBCB9DtnVAIueBAKNAHIEAAIAwAQCdASoIAAgAAUAmJaQAA3AA/vz0AAA=",mp4:"data:video/mp4;base64,AAAAIGZ0eXBtcDQyAAACAGlzb21pc28yYXZjMW1wNDEAAAAIZnJlZQAACKBtZGF0AAAC8wYF///v3EXpvebZSLeWLNgg2SPu73gyNjQgLSBjb3JlIDE0MiByMjQ3OSBkZDc5YTYxIC0gSC4yNjQvTVBFRy00IEFWQyBjb2RlYyAtIENvcHlsZWZ0IDIwMDMtMjAxNCAtIGh0dHA6Ly93d3cudmlkZW9sYW4ub3JnL3gyNjQuaHRtbCAtIG9wdGlvbnM6IGNhYmFjPTEgcmVmPTEgZGVibG9jaz0xOjA6MCBhbmFseXNlPTB4MToweDExMSBtZT1oZXggc3VibWU9MiBwc3k9MSBwc3lfcmQ9MS4wMDowLjAwIG1peGVkX3JlZj0wIG1lX3JhbmdlPTE2IGNocm9tYV9tZT0xIHRyZWxsaXM9MCA4eDhkY3Q9MCBjcW09MCBkZWFkem9uZT0yMSwxMSBmYXN0X3Bza2lwPTEgY2hyb21hX3FwX29mZnNldD0wIHRocmVhZHM9NiBsb29rYWhlYWRfdGhyZWFkcz0xIHNsaWNlZF90aHJlYWRzPTAgbnI9MCBkZWNpbWF0ZT0xIGludGVybGFjZWQ9MCBibHVyYXlfY29tcGF0PTAgY29uc3RyYWluZWRfaW50cmE9MCBiZnJhbWVzPTMgYl9weXJhbWlkPTIgYl9hZGFwdD0xIGJfYmlhcz0wIGRpcmVjdD0xIHdlaWdodGI9MSBvcGVuX2dvcD0wIHdlaWdodHA9MSBrZXlpbnQ9MzAwIGtleWludF9taW49MzAgc2NlbmVjdXQ9NDAgaW50cmFfcmVmcmVzaD0wIHJjX2xvb2thaGVhZD0xMCByYz1jcmYgbWJ0cmVlPTEgY3JmPTIwLjAgcWNvbXA9MC42MCBxcG1pbj0wIHFwbWF4PTY5IHFwc3RlcD00IHZidl9tYXhyYXRlPTIwMDAwIHZidl9idWZzaXplPTI1MDAwIGNyZl9tYXg9MC4wIG5hbF9ocmQ9bm9uZSBmaWxsZXI9MCBpcF9yYXRpbz0xLjQwIGFxPTE6MS4wMACAAAAAOWWIhAA3//p+C7v8tDDSTjf97w55i3SbRPO4ZY+hkjD5hbkAkL3zpJ6h/LR1CAABzgB1kqqzUorlhQAAAAxBmiQYhn/+qZYADLgAAAAJQZ5CQhX/AAj5IQAD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"}}])}); -------------------------------------------------------------------------------- /custom_components/ha-baidu-map/dist/js/app.5f7fe2b6.js: -------------------------------------------------------------------------------- 1 | (function(t){function e(e){for(var o,a,c=e[0],l=e[1],s=e[2],u=0,f=[];u1&&void 0!==c[1]?c[1]:{},r=null,"string"!==typeof e){t.next=16;break}if(a=null,"GPSLogger"!==e){t.next=8;break}return t.next=7,n.e("chunk-2d2295d7").then(n.bind(null,"dcac"));case 7:a=t.sent;case 8:if(null===a){t.next=12;break}r=i["a"].extend(a.default),t.next=14;break;case 12:return console.error("组件未定义"),t.abrupt("return");case 14:t.next=17;break;case 16:r=i["a"].extend(e);case 17:return t.abrupt("return",new Promise(function(t,e){var n=new r({router:f,propsData:o}).$mount(document.createElement("div"));n.$on("done",function(e){return t(e)})}));case 18:case"end":return t.stop()}},t)}));return function(e){return t.apply(this,arguments)}}(),new i["a"]({router:f,render:function(t){return t(u)}}).$mount("#app")},"5c48":function(t,e,n){},7237:function(t,e,n){"use strict";var o=n("0672"),i=n.n(o);i.a},"7c55":function(t,e,n){"use strict";var o=n("5c48"),i=n.n(o);i.a},bb51:function(t,e,n){"use strict";n.r(e);var o=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticStyle:{height:"100vh","z-index":"1000",position:"fixed",top:"0",left:"0",width:"100%"}},[n("baidu-map",{staticStyle:{height:"100vh",position:"fixed",top:"0",left:"0",width:"100%"},attrs:{center:t.center,zoom:t.zoom,"scroll-wheel-zoom":!0},on:{ready:t.ready}},[n("bm-navigation",{attrs:{anchor:"BMAP_ANCHOR_TOP_RIGHT"}}),n("bm-map-type",{attrs:{"map-types":["BMAP_NORMAL_MAP","BMAP_HYBRID_MAP"],anchor:"BMAP_ANCHOR_TOP_LEFT"}}),n("bm-control",[n("div",{staticStyle:{padding:"10px","margin-top":"30px"}},[n("mu-button",{attrs:{small:""},on:{click:function(e){t.open=!0}}},[t._v("更多功能")]),n("mu-bottom-sheet",{attrs:{open:t.open},on:{"update:open":function(e){t.open=e}}},[n("mu-list",[n("mu-sub-header",[t._v("选择监测设备")]),t._l(t.allList,function(e,o){return n("mu-list-item",{key:o,attrs:{button:""},on:{click:function(n){return t.selectDevice(e)}}},[n("mu-list-item-action",[n("mu-icon",{attrs:{value:"location_on",color:"blue"}})],1),n("mu-list-item-title",[t._v(t._s(e.title))])],1)})],2)],1)],1)]),t._l(t.zoneList,function(e,o){return[n("bm-circle",{key:o,attrs:{center:e.location,radius:100,"stroke-color":"#0f67b1","stroke-opacity":.5,"stroke-weight":2}}),n("my-overlay",{key:"zone"+o,attrs:{icon:{url:e.icon,size:{width:50,height:50},opts:{imageSize:{width:50,height:50}}},position:e.location}},[n("b",[t._v(t._s(e.title))]),n("br"),n("ul",{staticClass:"list-info"},[n("li",[t._v("\n 经度:\n "),n("span",[t._v(t._s(e.location.lng))])]),n("li",[t._v("\n 纬度:\n "),n("span",[t._v(t._s(e.location.lat))])])])])]}),t._l(t.deviceList,function(e,o){return[n("bm-circle",{key:"device-round"+o,attrs:{center:e.location,radius:30,"stroke-color":"blue","stroke-opacity":.5,"stroke-weight":2}}),n("my-overlay",{key:"device"+o,attrs:{icon:{url:e.icon,size:{width:50,height:50},opts:{imageSize:{width:50,height:50}}},position:e.location,animation:"BMAP_ANIMATION_BOUNCE"}},[n("b",[t._v(t._s(e.title))]),n("br"),n("ul",{staticClass:"list-info"},[n("li",[t._v("\n 经度:\n "),n("span",[t._v(t._s(e.location.lng))])]),n("li",[t._v("\n 纬度:\n "),n("span",[t._v(t._s(e.location.lat))])]),t._l(e.range,function(e,o){return n("li",{key:o},[t._v("\n 距离\n "),n("b",{staticStyle:{color:"orange"}},[t._v(t._s(e.zone))]),n("span",[t._v(t._s(e.mi)+"米")])])})],2)])]})],2),n("LogInfo",{ref:"LogInfo"})],1)},i=[],r=(n("96cf"),n("3b8d")),a=(n("ac4d"),n("8a81"),n("6c7b"),n("ac6a"),n("75fc")),c=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("bm-marker",t._b({attrs:{dragging:!1},on:{click:t.infoWindowOpen}},"bm-marker",t.$attrs,!1),[n("bm-info-window",{attrs:{show:t.show},on:{close:t.infoWindowClose,open:t.infoWindowOpen}},[t._t("default")],2)],1)},l=[],s={data:function(){return{show:!1}},methods:{infoWindowOpen:function(){this.show=!0},infoWindowClose:function(){this.show=!1}}},u=s,d=(n("7237"),n("2877")),f=Object(d["a"])(u,c,l,!1,null,null,null),p=f.exports,h=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("mu-dialog",{attrs:{"full-width":"",transition:"slide-bottom",fullscreen:"",scrollable:"",open:t.openScroll},on:{"update:open":function(e){t.openScroll=e}}},[n("mu-appbar",{attrs:{color:"primary",title:"GPSLogger定位日志"}},[n("mu-button",{attrs:{slot:"left",icon:""},on:{click:t.close},slot:"left"},[n("mu-icon",{attrs:{value:"close"}})],1)],1),n("div",{staticStyle:{padding:"24px"}},[n("mu-text-field",{attrs:{readonly:"","multi-line":"",rows:15,"full-width":""},model:{value:t.log,callback:function(e){t.log=e},expression:"log"}})],1)],1)},g=[],v={data:function(){return{openScroll:!1,log:""}},methods:{show:function(){this.openScroll=!0},add:function(t){this.log="".concat((new Date).toLocaleString(),"\n").concat(t,"\n ").concat(this.log)},close:function(){this.openScroll=!1}}},m=v,w=Object(d["a"])(m,h,g,!1,null,null,null),b=w.exports,y={components:{MyOverlay:p,LogInfo:b},data:function(){return{open:!1,zoom:18,zoneList:[],deviceList:[],allList:[],center:{lng:121.848405,lat:31.739856},isStartLocation:!1,isSendLocation:!1}},created:function(){this.allList=[].concat(Object(a["a"])(this.deviceList),Object(a["a"])(this.zoneList))},methods:{ready:function(t){var e=this,n=t.map;t.BMap;window.hassMap.hass.then(function(t){var o=[],i=[];t.zoneList.forEach(function(t){var n=t.entity.attributes;o.push({title:t.title,location:{lng:n.longitude,lat:n.latitude},icon:"./img/home.png"}),i.push(new window.BMap.Point(n.longitude,n.latitude)),e.center={lng:n.longitude,lat:n.latitude}});var r=[];t.deviceList.forEach(function(t){var n=t.entity.attributes,o=e.getTextImage(t.title);r.push({title:t.title,location:{lng:n.longitude,lat:n.latitude},icon:n.picture||o,range:[]}),i.push(new window.BMap.Point(n.longitude,n.latitude))});var a=new window.BMap.Convertor;a.translate(i,0,5,function(t){if(0===t.status){t.points.forEach(function(t,n){n>=o.length?r[n-o.length].location={lng:t.lng,lat:t.lat}:(o[n].location={lng:t.lng,lat:t.lat},e.center={lng:t.lng,lat:t.lat})});for(var i=0,a=r;i 2 | 4 | 7 | 8 | Created by potrace 1.11, written by Peter Selinger 2001-2013 9 | 10 | 12 | 148 | 149 | 150 | -------------------------------------------------------------------------------- /dist/img/my.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaonianzhentan/ha-baidu-map/a93a097e2e49960e616f82cefc1934dc9b4ab38f/dist/img/my.png -------------------------------------------------------------------------------- /dist/index.html: -------------------------------------------------------------------------------- 1 | 百度地图
-------------------------------------------------------------------------------- /dist/js/NoSleep.min.js: -------------------------------------------------------------------------------- 1 | /*! NoSleep.min.js v0.9.0 - git.io/vfn01 - Rich Tibbett - MIT license */ 2 | !function(A,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.NoSleep=e():A.NoSleep=e()}("undefined"!=typeof self?self:this,function(){return function(A){function e(B){if(o[B])return o[B].exports;var Q=o[B]={i:B,l:!1,exports:{}};return A[B].call(Q.exports,Q,Q.exports,e),Q.l=!0,Q.exports}var o={};return e.m=A,e.c=o,e.d=function(A,o,B){e.o(A,o)||Object.defineProperty(A,o,{configurable:!1,enumerable:!0,get:B})},e.n=function(A){var o=A&&A.__esModule?function(){return A.default}:function(){return A};return e.d(o,"a",o),o},e.o=function(A,e){return Object.prototype.hasOwnProperty.call(A,e)},e.p="",e(e.s=0)}([function(A,e,o){"use strict";function B(A,e){if(!(A instanceof e))throw new TypeError("Cannot call a class as a function")}var Q=function(){function A(A,e){for(var o=0;o.5&&(e.noSleepVideo.currentTime=Math.random())})}))}return Q(A,[{key:"_addSourceToVideo",value:function(A,e,o){var B=document.createElement("source");B.src=o,B.type="video/"+e,A.appendChild(B)}},{key:"enable",value:function(){E?(this.disable(),console.warn("\n NoSleep enabled for older iOS devices. This can interrupt\n active or long-running network requests from completing successfully.\n See https://github.com/richtr/NoSleep.js/issues/15 for more details.\n "),this.noSleepTimer=window.setInterval(function(){document.hidden||(window.location.href=window.location.href.split("#")[0],window.setTimeout(window.stop,0))},15e3)):this.noSleepVideo.play()}},{key:"disable",value:function(){E?this.noSleepTimer&&(console.warn("\n NoSleep now disabled for older iOS devices.\n "),window.clearInterval(this.noSleepTimer),this.noSleepTimer=null):this.noSleepVideo.pause()}}]),A}();A.exports=l},function(A,e,o){"use strict";A.exports={webm:"data:video/webm;base64,GkXfo0AgQoaBAUL3gQFC8oEEQvOBCEKCQAR3ZWJtQoeBAkKFgQIYU4BnQI0VSalmQCgq17FAAw9CQE2AQAZ3aGFtbXlXQUAGd2hhbW15RIlACECPQAAAAAAAFlSua0AxrkAu14EBY8WBAZyBACK1nEADdW5khkAFVl9WUDglhohAA1ZQOIOBAeBABrCBCLqBCB9DtnVAIueBAKNAHIEAAIAwAQCdASoIAAgAAUAmJaQAA3AA/vz0AAA=",mp4:"data:video/mp4;base64,AAAAIGZ0eXBtcDQyAAACAGlzb21pc28yYXZjMW1wNDEAAAAIZnJlZQAACKBtZGF0AAAC8wYF///v3EXpvebZSLeWLNgg2SPu73gyNjQgLSBjb3JlIDE0MiByMjQ3OSBkZDc5YTYxIC0gSC4yNjQvTVBFRy00IEFWQyBjb2RlYyAtIENvcHlsZWZ0IDIwMDMtMjAxNCAtIGh0dHA6Ly93d3cudmlkZW9sYW4ub3JnL3gyNjQuaHRtbCAtIG9wdGlvbnM6IGNhYmFjPTEgcmVmPTEgZGVibG9jaz0xOjA6MCBhbmFseXNlPTB4MToweDExMSBtZT1oZXggc3VibWU9MiBwc3k9MSBwc3lfcmQ9MS4wMDowLjAwIG1peGVkX3JlZj0wIG1lX3JhbmdlPTE2IGNocm9tYV9tZT0xIHRyZWxsaXM9MCA4eDhkY3Q9MCBjcW09MCBkZWFkem9uZT0yMSwxMSBmYXN0X3Bza2lwPTEgY2hyb21hX3FwX29mZnNldD0wIHRocmVhZHM9NiBsb29rYWhlYWRfdGhyZWFkcz0xIHNsaWNlZF90aHJlYWRzPTAgbnI9MCBkZWNpbWF0ZT0xIGludGVybGFjZWQ9MCBibHVyYXlfY29tcGF0PTAgY29uc3RyYWluZWRfaW50cmE9MCBiZnJhbWVzPTMgYl9weXJhbWlkPTIgYl9hZGFwdD0xIGJfYmlhcz0wIGRpcmVjdD0xIHdlaWdodGI9MSBvcGVuX2dvcD0wIHdlaWdodHA9MSBrZXlpbnQ9MzAwIGtleWludF9taW49MzAgc2NlbmVjdXQ9NDAgaW50cmFfcmVmcmVzaD0wIHJjX2xvb2thaGVhZD0xMCByYz1jcmYgbWJ0cmVlPTEgY3JmPTIwLjAgcWNvbXA9MC42MCBxcG1pbj0wIHFwbWF4PTY5IHFwc3RlcD00IHZidl9tYXhyYXRlPTIwMDAwIHZidl9idWZzaXplPTI1MDAwIGNyZl9tYXg9MC4wIG5hbF9ocmQ9bm9uZSBmaWxsZXI9MCBpcF9yYXRpbz0xLjQwIGFxPTE6MS4wMACAAAAAOWWIhAA3//p+C7v8tDDSTjf97w55i3SbRPO4ZY+hkjD5hbkAkL3zpJ6h/LR1CAABzgB1kqqzUorlhQAAAAxBmiQYhn/+qZYADLgAAAAJQZ5CQhX/AAj5IQAD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"}}])}); -------------------------------------------------------------------------------- /dist/js/app.9ceacd07.js: -------------------------------------------------------------------------------- 1 | (function(t){function e(e){for(var o,a,c=e[0],l=e[1],s=e[2],u=0,d=[];u1&&void 0!==c[1]?c[1]:{},r=null,"string"!==typeof e){t.next=16;break}if(a=null,"GPSLogger"!==e){t.next=8;break}return t.next=7,n.e("chunk-2d2295d7").then(n.bind(null,"dcac"));case 7:a=t.sent;case 8:if(null===a){t.next=12;break}r=i["a"].extend(a.default),t.next=14;break;case 12:return console.error("组件未定义"),t.abrupt("return");case 14:t.next=17;break;case 16:r=i["a"].extend(e);case 17:return t.abrupt("return",new Promise(function(t,e){var n=new r({router:d,propsData:o}).$mount(document.createElement("div"));n.$on("done",function(e){return t(e)})}));case 18:case"end":return t.stop()}},t)}));return function(e){return t.apply(this,arguments)}}(),new i["a"]({router:d,render:function(t){return t(u)}}).$mount("#app")},7237:function(t,e,n){"use strict";var o=n("f8ca"),i=n.n(o);i.a},"7c55":function(t,e,n){"use strict";var o=n("3337"),i=n.n(o);i.a},bb51:function(t,e,n){"use strict";n.r(e);var o=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticStyle:{height:"100vh","z-index":"1000",position:"fixed",top:"0",left:"0",width:"100%"}},[n("baidu-map",{staticStyle:{height:"100vh",position:"fixed",top:"0",left:"0",width:"100%"},attrs:{center:t.center,zoom:t.zoom,"scroll-wheel-zoom":!0},on:{ready:t.ready}},[n("bm-navigation",{attrs:{anchor:"BMAP_ANCHOR_TOP_RIGHT"}}),n("bm-map-type",{attrs:{"map-types":["BMAP_NORMAL_MAP","BMAP_HYBRID_MAP"],anchor:"BMAP_ANCHOR_TOP_LEFT"}}),n("bm-control",[n("div",{staticStyle:{padding:"10px","margin-top":"30px"}},[n("mu-button",{attrs:{small:""},on:{click:function(e){t.open=!0}}},[t._v("更多功能")]),n("mu-bottom-sheet",{attrs:{open:t.open},on:{"update:open":function(e){t.open=e}}},[n("mu-list",[n("mu-sub-header",[t._v("选择监测设备")]),t._l(t.allList,function(e,o){return n("mu-list-item",{key:o,attrs:{button:""},on:{click:function(n){return t.selectDevice(e)}}},[n("mu-list-item-action",[n("mu-icon",{attrs:{value:"location_on",color:"blue"}})],1),n("mu-list-item-title",[t._v(t._s(e.title))])],1)})],2),n("mu-list",[n("mu-sub-header",[t._v("设置")]),n("mu-list-item",{attrs:{button:""},on:{click:t.gpsloggerClick}},[n("mu-list-item-action",[n("mu-icon",{attrs:{value:"settings",color:"green"}})],1),n("mu-list-item-title",[t._v("GPSLogger配置")])],1),n("mu-list-item",{attrs:{button:""},on:{click:t.logInfoClick}},[n("mu-list-item-action",[n("mu-icon",{attrs:{value:"settings",color:"green"}})],1),n("mu-list-item-title",[t._v("GPSLogger定位日志查看")])],1),n("mu-list-item",{attrs:{button:""},on:{click:t.homeClick}},[n("mu-list-item-action",[n("mu-icon",{attrs:{value:"home",color:"red"}})],1),n("mu-list-item-title",[t._v("回到首页")])],1)],1)],1)],1)]),t._l(t.zoneList,function(e,o){return[n("bm-circle",{key:o,attrs:{center:e.location,radius:100,"stroke-color":"#0f67b1","stroke-opacity":.5,"stroke-weight":2}}),n("my-overlay",{key:"zone"+o,attrs:{icon:{url:e.icon,size:{width:50,height:50},opts:{imageSize:{width:50,height:50}}},position:e.location}},[n("b",[t._v(t._s(e.title))]),n("br"),n("ul",{staticClass:"list-info"},[n("li",[t._v("\n 经度:\n "),n("span",[t._v(t._s(e.location.lng))])]),n("li",[t._v("\n 纬度:\n "),n("span",[t._v(t._s(e.location.lat))])])])])]}),t._l(t.deviceList,function(e,o){return[n("bm-circle",{key:"device-round"+o,attrs:{center:e.location,radius:30,"stroke-color":"blue","stroke-opacity":.5,"stroke-weight":2}}),n("my-overlay",{key:"device"+o,attrs:{icon:{url:e.icon,size:{width:50,height:50},opts:{imageSize:{width:50,height:50}}},position:e.location,animation:"BMAP_ANIMATION_BOUNCE"}},[n("b",[t._v(t._s(e.title))]),n("br"),n("ul",{staticClass:"list-info"},[n("li",[t._v("\n 经度:\n "),n("span",[t._v(t._s(e.location.lng))])]),n("li",[t._v("\n 纬度:\n "),n("span",[t._v(t._s(e.location.lat))])]),t._l(e.range,function(e,o){return n("li",{key:o},[t._v("\n 距离\n "),n("b",{staticStyle:{color:"orange"}},[t._v(t._s(e.zone))]),n("span",[t._v(t._s(e.mi)+"米")])])})],2)])]}),n("bm-geolocation",{attrs:{anchor:"BMAP_ANCHOR_BOTTOM_RIGHT",showAddressBar:!0,autoLocation:!0},on:{locationSuccess:t.locationSuccess,locationError:t.locationError}})],2),n("LogInfo",{ref:"LogInfo"})],1)},i=[],r=(n("4453"),n("5605")),a=(n("0eb5"),n("a4c5"),n("1c74"),n("f763"),n("41c4")),c=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("bm-marker",t._b({attrs:{dragging:!1},on:{click:t.infoWindowOpen}},"bm-marker",t.$attrs,!1),[n("bm-info-window",{attrs:{show:t.show},on:{close:t.infoWindowClose,open:t.infoWindowOpen}},[t._t("default")],2)],1)},l=[],s={data:function(){return{show:!1}},methods:{infoWindowOpen:function(){this.show=!0},infoWindowClose:function(){this.show=!1}}},u=s,f=(n("7237"),n("17cc")),d=Object(f["a"])(u,c,l,!1,null,null,null),p=d.exports,h=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("mu-dialog",{attrs:{"full-width":"",transition:"slide-bottom",fullscreen:"",scrollable:"",open:t.openScroll},on:{"update:open":function(e){t.openScroll=e}}},[n("mu-appbar",{attrs:{color:"primary",title:"GPSLogger定位日志"}},[n("mu-button",{attrs:{slot:"left",icon:""},on:{click:t.close},slot:"left"},[n("mu-icon",{attrs:{value:"close"}})],1)],1),n("div",{staticStyle:{padding:"24px"}},[n("mu-text-field",{attrs:{readonly:"","multi-line":"",rows:15,"full-width":""},model:{value:t.log,callback:function(e){t.log=e},expression:"log"}})],1)],1)},g=[],m={data:function(){return{openScroll:!1,log:""}},methods:{show:function(){this.openScroll=!0},add:function(t){this.log="".concat((new Date).toLocaleString(),"\n").concat(t,"\n ").concat(this.log)},close:function(){this.openScroll=!1}}},v=m,w=Object(f["a"])(v,h,g,!1,null,null,null),b=w.exports,y={components:{MyOverlay:p,LogInfo:b},data:function(){return{open:!1,zoom:18,zoneList:[{title:"家测试",location:{lng:121.34607502288814,lat:31.24192393278093},icon:"./img/home.png",range:[]}],deviceList:[{title:"我测试",location:{lng:121.34607502288814,lat:31.23192393278093},icon:"./img/my.png",range:[]}],allList:[],center:{lng:121.848405,lat:31.739856},isStartLocation:!1,isSendLocation:!1}},created:function(){this.allList=[].concat(Object(a["a"])(this.deviceList),Object(a["a"])(this.zoneList))},methods:{ready:function(t){var e=this,n=t.map;t.BMap;window.hassMap.hass.then(function(t){var o=[],i=[];t.zoneList.forEach(function(t){var n=t.entity.attributes;o.push({title:t.title,location:{lng:n.longitude,lat:n.latitude},icon:"./img/home.png"}),i.push(new window.BMap.Point(n.longitude,n.latitude)),e.center={lng:n.longitude,lat:n.latitude}});var r=[];t.deviceList.forEach(function(t){var n=t.entity.attributes,o=e.getTextImage(t.title);r.push({title:t.title,location:{lng:n.longitude,lat:n.latitude},icon:n.picture||o,range:[]}),i.push(new window.BMap.Point(n.longitude,n.latitude))});var a=new window.BMap.Convertor;a.translate(i,0,5,function(t){if(0===t.status){t.points.forEach(function(t,n){n>=o.length?r[n-o.length].location={lng:t.lng,lat:t.lat}:(o[n].location={lng:t.lng,lat:t.lat},e.center={lng:t.lng,lat:t.lat})});for(var i=0,a=r;i 2 | 4 | 7 | 8 | Created by potrace 1.11, written by Peter Selinger 2001-2013 9 | 10 | 12 | 148 | 149 | 150 | -------------------------------------------------------------------------------- /public/img/my.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaonianzhentan/ha-baidu-map/a93a097e2e49960e616f82cefc1934dc9b4ab38f/public/img/my.png -------------------------------------------------------------------------------- /public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 百度地图 9 | 10 | 11 | 12 | 15 |
16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /public/js/NoSleep.min.js: -------------------------------------------------------------------------------- 1 | /*! NoSleep.min.js v0.9.0 - git.io/vfn01 - Rich Tibbett - MIT license */ 2 | !function(A,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.NoSleep=e():A.NoSleep=e()}("undefined"!=typeof self?self:this,function(){return function(A){function e(B){if(o[B])return o[B].exports;var Q=o[B]={i:B,l:!1,exports:{}};return A[B].call(Q.exports,Q,Q.exports,e),Q.l=!0,Q.exports}var o={};return e.m=A,e.c=o,e.d=function(A,o,B){e.o(A,o)||Object.defineProperty(A,o,{configurable:!1,enumerable:!0,get:B})},e.n=function(A){var o=A&&A.__esModule?function(){return A.default}:function(){return A};return e.d(o,"a",o),o},e.o=function(A,e){return Object.prototype.hasOwnProperty.call(A,e)},e.p="",e(e.s=0)}([function(A,e,o){"use strict";function B(A,e){if(!(A instanceof e))throw new TypeError("Cannot call a class as a function")}var Q=function(){function A(A,e){for(var o=0;o.5&&(e.noSleepVideo.currentTime=Math.random())})}))}return Q(A,[{key:"_addSourceToVideo",value:function(A,e,o){var B=document.createElement("source");B.src=o,B.type="video/"+e,A.appendChild(B)}},{key:"enable",value:function(){E?(this.disable(),console.warn("\n NoSleep enabled for older iOS devices. This can interrupt\n active or long-running network requests from completing successfully.\n See https://github.com/richtr/NoSleep.js/issues/15 for more details.\n "),this.noSleepTimer=window.setInterval(function(){document.hidden||(window.location.href=window.location.href.split("#")[0],window.setTimeout(window.stop,0))},15e3)):this.noSleepVideo.play()}},{key:"disable",value:function(){E?this.noSleepTimer&&(console.warn("\n NoSleep now disabled for older iOS devices.\n "),window.clearInterval(this.noSleepTimer),this.noSleepTimer=null):this.noSleepVideo.pause()}}]),A}();A.exports=l},function(A,e,o){"use strict";A.exports={webm:"data:video/webm;base64,GkXfo0AgQoaBAUL3gQFC8oEEQvOBCEKCQAR3ZWJtQoeBAkKFgQIYU4BnQI0VSalmQCgq17FAAw9CQE2AQAZ3aGFtbXlXQUAGd2hhbW15RIlACECPQAAAAAAAFlSua0AxrkAu14EBY8WBAZyBACK1nEADdW5khkAFVl9WUDglhohAA1ZQOIOBAeBABrCBCLqBCB9DtnVAIueBAKNAHIEAAIAwAQCdASoIAAgAAUAmJaQAA3AA/vz0AAA=",mp4:"data:video/mp4;base64,AAAAIGZ0eXBtcDQyAAACAGlzb21pc28yYXZjMW1wNDEAAAAIZnJlZQAACKBtZGF0AAAC8wYF///v3EXpvebZSLeWLNgg2SPu73gyNjQgLSBjb3JlIDE0MiByMjQ3OSBkZDc5YTYxIC0gSC4yNjQvTVBFRy00IEFWQyBjb2RlYyAtIENvcHlsZWZ0IDIwMDMtMjAxNCAtIGh0dHA6Ly93d3cudmlkZW9sYW4ub3JnL3gyNjQuaHRtbCAtIG9wdGlvbnM6IGNhYmFjPTEgcmVmPTEgZGVibG9jaz0xOjA6MCBhbmFseXNlPTB4MToweDExMSBtZT1oZXggc3VibWU9MiBwc3k9MSBwc3lfcmQ9MS4wMDowLjAwIG1peGVkX3JlZj0wIG1lX3JhbmdlPTE2IGNocm9tYV9tZT0xIHRyZWxsaXM9MCA4eDhkY3Q9MCBjcW09MCBkZWFkem9uZT0yMSwxMSBmYXN0X3Bza2lwPTEgY2hyb21hX3FwX29mZnNldD0wIHRocmVhZHM9NiBsb29rYWhlYWRfdGhyZWFkcz0xIHNsaWNlZF90aHJlYWRzPTAgbnI9MCBkZWNpbWF0ZT0xIGludGVybGFjZWQ9MCBibHVyYXlfY29tcGF0PTAgY29uc3RyYWluZWRfaW50cmE9MCBiZnJhbWVzPTMgYl9weXJhbWlkPTIgYl9hZGFwdD0xIGJfYmlhcz0wIGRpcmVjdD0xIHdlaWdodGI9MSBvcGVuX2dvcD0wIHdlaWdodHA9MSBrZXlpbnQ9MzAwIGtleWludF9taW49MzAgc2NlbmVjdXQ9NDAgaW50cmFfcmVmcmVzaD0wIHJjX2xvb2thaGVhZD0xMCByYz1jcmYgbWJ0cmVlPTEgY3JmPTIwLjAgcWNvbXA9MC42MCBxcG1pbj0wIHFwbWF4PTY5IHFwc3RlcD00IHZidl9tYXhyYXRlPTIwMDAwIHZidl9idWZzaXplPTI1MDAwIGNyZl9tYXg9MC4wIG5hbF9ocmQ9bm9uZSBmaWxsZXI9MCBpcF9yYXRpbz0xLjQwIGFxPTE6MS4wMACAAAAAOWWIhAA3//p+C7v8tDDSTjf97w55i3SbRPO4ZY+hkjD5hbkAkL3zpJ6h/LR1CAABzgB1kqqzUorlhQAAAAxBmiQYhn/+qZYADLgAAAAJQZ5CQhX/AAj5IQAD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"}}])}); -------------------------------------------------------------------------------- /public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "map", 3 | "short_name": "map", 4 | "icons": [ 5 | { 6 | "src": "./img/icons/android-chrome-192x192.png", 7 | "sizes": "192x192", 8 | "type": "image/png" 9 | }, 10 | { 11 | "src": "./img/icons/android-chrome-512x512.png", 12 | "sizes": "512x512", 13 | "type": "image/png" 14 | } 15 | ], 16 | "start_url": "./index.html", 17 | "display": "standalone", 18 | "background_color": "#000000", 19 | "theme_color": "#4DBA87" 20 | } 21 | -------------------------------------------------------------------------------- /public/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Disallow: 3 | -------------------------------------------------------------------------------- /screenshots/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaonianzhentan/ha-baidu-map/a93a097e2e49960e616f82cefc1934dc9b4ab38f/screenshots/1.png -------------------------------------------------------------------------------- /screenshots/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaonianzhentan/ha-baidu-map/a93a097e2e49960e616f82cefc1934dc9b4ab38f/screenshots/2.png -------------------------------------------------------------------------------- /src/App.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 14 | -------------------------------------------------------------------------------- /src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaonianzhentan/ha-baidu-map/a93a097e2e49960e616f82cefc1934dc9b4ab38f/src/assets/logo.png -------------------------------------------------------------------------------- /src/components/GPSLogger.vue: -------------------------------------------------------------------------------- 1 | 14 | 55 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /src/components/LogInfo.vue: -------------------------------------------------------------------------------- 1 | 13 | -------------------------------------------------------------------------------- /src/components/MyOverlay.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 26 | 27 | 39 | -------------------------------------------------------------------------------- /src/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import App from './App.vue' 3 | import router from './router' 4 | import './registerServiceWorker' 5 | 6 | Vue.config.productionTip = false 7 | 8 | import MuseUI from 'muse-ui'; 9 | import 'muse-ui/dist/muse-ui.css'; 10 | Vue.use(MuseUI); 11 | 12 | import Loading from 'muse-ui-loading'; 13 | import 'muse-ui-loading/dist/muse-ui-loading.css'; 14 | Vue.use(Loading); 15 | 16 | import Toast from 'muse-ui-toast'; 17 | Vue.use(Toast); 18 | 19 | // 引入vue-amap 20 | import BaiduMap from 'vue-baidu-map'; 21 | Vue.use(BaiduMap, { 22 | // ak 是在百度地图开发者平台申请的密钥 详见 http://lbsyun.baidu.com/apiconsole/key */ 23 | ak: 'hNT4WeW0AGvh2GuzuO92OfM6hCW25HhX', 24 | }); 25 | 26 | top.document.body.style.overflow = 'hidden' 27 | 28 | window.noSleep = new NoSleep(); 29 | 30 | window.hassMap = { 31 | get hass() { 32 | return new Promise(async (resolve, reject) => { 33 | const res = await top.window.hassConnection; 34 | if (res == null) { 35 | reject(new Error('请在Home Assistant中使用')); 36 | return; 37 | } 38 | const conn = res.conn; 39 | const zoneList = []; 40 | const deviceList = []; 41 | const ents = conn._ent.state; 42 | // 过滤所有媒体播放器 43 | Object.keys(ents).forEach((key) => { 44 | const entity = ents[key]; 45 | if (key.indexOf('zone.') === 0) { 46 | const attr = entity.attributes; 47 | if (attr.latitude && attr.longitude) { 48 | zoneList.push({ 49 | id: entity.entity_id, 50 | title: entity.attributes.friendly_name, 51 | entity, 52 | }); 53 | } 54 | } else if (key.indexOf('device_tracker.') === 0) { 55 | const attr = entity.attributes; 56 | if (attr.latitude && attr.longitude) { 57 | deviceList.push({ 58 | id: entity.entity_id, 59 | title: attr.friendly_name, 60 | entity, 61 | }); 62 | } 63 | } 64 | }); 65 | const o = Object.create(null); 66 | o.zoneList = zoneList; 67 | o.deviceList = deviceList; 68 | resolve(o); 69 | }); 70 | }, 71 | }; 72 | 73 | //动态注册组件 74 | Vue.prototype.registeredComponent = async function (component, propsData = {}) { 75 | let _constructor = null 76 | if (typeof component === 'string') { 77 | let com = null 78 | //任务队列 79 | if (component === 'GPSLogger') com = await import('@/components/GPSLogger') 80 | if (com !== null) { 81 | _constructor = Vue.extend(com.default) 82 | } 83 | else { 84 | console.error('组件未定义') 85 | return 86 | } 87 | } else { 88 | _constructor = Vue.extend(component) 89 | } 90 | 91 | return new Promise((resolve, reject) => { 92 | let instance = new _constructor({ 93 | router, 94 | propsData 95 | }).$mount(document.createElement('div')) 96 | 97 | instance.$on('done', data => resolve(data)) 98 | }) 99 | 100 | } 101 | 102 | 103 | new Vue({ 104 | router, 105 | render: h => h(App) 106 | }).$mount('#app') 107 | -------------------------------------------------------------------------------- /src/registerServiceWorker.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable no-console */ 2 | 3 | import { register } from 'register-service-worker' 4 | 5 | if (process.env.NODE_ENV === 'production') { 6 | register(`${process.env.BASE_URL}service-worker.js`, { 7 | ready () { 8 | console.log( 9 | 'App is being served from cache by a service worker.\n' + 10 | 'For more details, visit https://goo.gl/AFskqB' 11 | ) 12 | }, 13 | registered () { 14 | console.log('Service worker has been registered.') 15 | }, 16 | cached () { 17 | console.log('Content has been cached for offline use.') 18 | }, 19 | updatefound () { 20 | console.log('New content is downloading.') 21 | }, 22 | updated () { 23 | console.log('New content is available; please refresh.') 24 | }, 25 | offline () { 26 | console.log('No internet connection found. App is running in offline mode.') 27 | }, 28 | error (error) { 29 | console.error('Error during service worker registration:', error) 30 | } 31 | }) 32 | } 33 | -------------------------------------------------------------------------------- /src/router.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import Router from 'vue-router' 3 | import Home from './views/Home.vue' 4 | 5 | Vue.use(Router) 6 | 7 | export default new Router({ 8 | routes: [ 9 | { 10 | path: '/', 11 | name: 'home', 12 | component: () => import('./views/Home.vue') 13 | } 14 | ] 15 | }) 16 | -------------------------------------------------------------------------------- /src/views/Home.vue: -------------------------------------------------------------------------------- 1 | 147 | 148 | 451 | -------------------------------------------------------------------------------- /vue.config.js: -------------------------------------------------------------------------------- 1 | 2 | module.exports = { 3 | publicPath: '', 4 | outputDir: './custom_components/ha-baidu-map/dist', 5 | productionSourceMap: process.env.NODE_ENV === 'production' ? false : true 6 | } 7 | --------------------------------------------------------------------------------