当前位置:   article > 正文

vue3获取当前位置和当前天气情况_vue3天气组件

vue3天气组件

流程如下:

1、安装百度地图

先在根目录上(或者public中)的index.html文件的body标签中加入

<script  src="https://api.map.baidu.com/api?v=3.0&ak=你在百度地图申请的Ak"></script>

 

 

然后,新建一个bdmap.js文件,放入以下内容,并且在你要使用的页面中引入,

  1. export default {
  2. init: function () {
  3. const AK = "EAG3waLsHfeWew8ZjxlvQgvxuqXY5moB"; //AK
  4. const BMap_URL =
  5. "https://api.map.baidu.com/api?v=2.0&ak=" +
  6. AK +
  7. "&s=1&callback=onBMapCallback";
  8. return new Promise((resolve, reject) => {
  9. // 如果已加载直接返回
  10. if (typeof BMap !== "undefined") {
  11. resolve(BMap);
  12. return true;
  13. }
  14. // 百度地图异步加载回调处理
  15. window.onBMapCallback = function () {
  16. resolve(BMap);
  17. };
  18. // 插入script脚本
  19. let scriptNode = document.createElement("script");
  20. // scriptNode.setAttribute(type, 'text/javascript');
  21. scriptNode.setAttribute("src", BMap_URL);
  22. document.body.appendChild(scriptNode);
  23. });
  24. },
  25. };

2、结合浏览器获取你所在城市位置

3、通过位置获取城市ID

4、通过城市ID获取城市天气状况

  1. <template>
  2. <div></div>
  3. </template>
  4. <script>
  5. import { ref, reactive, onMounted } from "vue";
  6. import myBMap from "./bmap.js"; // 引入刚才创建的bmap.js文件
  7. import axios from "axios";
  8. export default {
  9. //props: {},
  10. components: {},
  11. setup() {
  12. let weather = ref(""); // 天气
  13. let temperature = ref(""); // 温度
  14. // 结合浏览器获取城市位置(我只需要获取省和市,具体看个人需求)
  15. const getCity = () => {
  16. // const BMap = (window as any).BMapGL;
  17. myBMap.init().then((BMap) => {
  18. let myCity = new BMap.LocalCity();
  19. myCity.get(
  20. (result) => {
  21. let geoc = new BMap.Geocoder();
  22. geoc.getLocation(result.center, (res) => {
  23. // 位置信息
  24. console.log("位置", res.addressComponents);
  25. getLocationId(
  26. res.addressComponents.province,
  27. res.addressComponents.city
  28. );
  29. });
  30. },
  31. { enableHighAccuracy: true }
  32. );
  33. });
  34. };
  35. // 获取城市id
  36. const getLocationId = (province, city) => {
  37. axios({
  38. method: "get",
  39. url:
  40. "https://geoapi.qweather.com/v2/city/lookup?key=56a14978f76747a8897384f7bef56c20&adm=" +
  41. province +
  42. "&location=" +
  43. city,
  44. }).then((res) => {
  45. getWeather(res.data.location[0].id);
  46. console.log(res.data.location[0]);
  47. });
  48. };
  49. // 获取天气
  50. const getWeather = (id) => {
  51. axios({
  52. method: "get",
  53. url:
  54. "https://devapi.qweather.com/v7/weather/now?key=56a14978f76747a8897384f7bef56c20&location=" +
  55. id,
  56. }).then((res) => {
  57. temperature.value = res.data.now.temp;
  58. weather.value = res.data.now.text;
  59. console.log(res.data, 1213);
  60. });
  61. };
  62. onMounted(async () => {
  63. getCity(); // 获取城市
  64. // var result = await axios.get(
  65. // "http://wthrcdn.etouch.cn/weather_mini?city=" + "杭州"
  66. // );
  67. // console.log(result.data.data.forecast);
  68. });
  69. return {
  70. getWeather,
  71. getLocationId,
  72. getCity,
  73. weather,
  74. temperature,
  75. };
  76. },
  77. };
  78. </script>
  79. <style scoped lang="less"></style>

可以尝试复制代码  去获取你想要得到的信息

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/109910?site
推荐阅读
相关标签
  

闽ICP备14008679号