使用taro和react语言实现:微信小程序,地图中展示气泡,并在气泡中实现倒计时功能

使用 Taro 和 React 来实现微信小程序中的地图气泡倒计时功能,你需要首先确保已经安装了 Taro CLI 并创建了一个 Taro 项目。接下来,我们将逐步实现这个功能。

1. 初始化 Taro 项目

如果你还没有安装 Taro CLI,可以使用 npm 或 yarn 进行安装:

npm install -g @tarojs/cli
# 或者
yarn global add @tarojs/cli

然后,创建一个新的 Taro 项目:

taro init myTaroApp

选择 React 作为框架,并选择 微信小程序 作为目标平台。

2. 项目结构

Taro 项目的结构通常类似于一个标准的 React 项目,但会包含一些 Taro 特有的配置文件。

3. 修改 config/index.js

确保你的项目配置中包含了微信小程序的配置。通常,这个配置已经在初始化的项目中设置好了。

4. 编写页面组件

src/pages 目录下创建一个新的页面,比如 MapPage

src/pages/MapPage/index.jsx
import React, { useState, useEffect, useRef } from 'react';
import Taro, { View, Map } from '@tarojs/components';
import './index.scss';

const MapPage = () => {
  const [bubbles, setBubbles] = useState([]);
  const mapContext = useRef(null);

  useEffect(() => {
    // 添加初始气泡
    addBubble(116.397428, 39.90923, 10);

    // 清理函数,用于清除所有气泡的倒计时
    return () => {
      bubbles.forEach(bubble => clearInterval(bubble.interval));
    };
  }, []);

  const addBubble = (longitude, latitude, countdown) => {
    const width = Taro.getSystemInfoSync().windowWidth;
    const height = Taro.getSystemInfoSync().windowHeight;
    const left = Math.random() * width - 50;
    const top = Math.random() * height - 50;

    const bubble = {
      id: Date.now(),
      longitude,
      latitude,
      left: `${left}px`,
      top: `${top}px`,
      countdown,
      interval: null,
    };

    setBubbles(prevBubbles => [...prevBubbles, bubble]);

    startCountdown(bubble);
  };

  const startCountdown = (bubble) => {
    bubble.interval = setInterval(() => {
      bubble.countdown -= 1;
      setBubbles(prevBubbles =>
        prevBubbles.map(b => (b.id === bubble.id ? bubble : b))
      );

      if (bubble.countdown <= 0) {
        clearInterval(bubble.interval);
        removeBubble(bubble.id);
      }
    }, 1000);
  };

  const removeBubble = (id) => {
    setBubbles(prevBubbles => prevBubbles.filter(bubble => bubble.id !== id));
  };

  const onMapTap = (e) => {
    const { longitude, latitude } = e.detail;
    addBubble(longitude, latitude, 10);
  };

  return (
    <View className='map-container'>
      <Map
        id='map'
        longitude={116.397428}
        latitude={39.90923}
        scale={14}
        markers={[{ id: 1, latitude: 39.90923, longitude: 116.397428 }]}
        onTap={onMapTap}
        style={{ width: '100%', height: '100vh' }}
      />
      {bubbles.map(bubble => (
        <View
          key={bubble.id}
          className='bubble'
          style={{ left: bubble.left, top: bubble.top }}
        >
          <View className='bubble-content'>倒计时: {bubble.countdown}s</View>
        </View>
      ))}
    </View>
  );
};

export default MapPage;
src/pages/MapPage/index.scss
.map-container {
  position: relative;
  width: 100%;
  height: 100vh;
}

.bubble {
  position: absolute;
  width: 100px;
  height: 100px;
  background-color: rgba(255, 0, 0, 0.7);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  color: white;
  font-size: 16px;
}

.bubble-content {
  text-align: center;
}

5. 配置路由

src/app.config.js 中配置页面路由:

export default {
  pages: [
    'pages/MapPage/index',
    // 其他页面...
  ],
  window: {
    backgroundTextStyle: 'light',
    navigationBarBackgroundColor: '#fff',
    navigationBarTitleText: 'WeChat',
    navigationBarTextStyle: 'black',
  },
};

6. 运行项目

使用 Taro CLI 运行项目:

taro build --type weapp --watch

或者使用 Taro 提供的开发工具(基于微信开发者工具)直接运行和调试:

taro dev:weapp

按照提示打开微信开发者工具,并选择你的项目目录进行预览和调试。

现在,你应该能够在微信小程序中看到一个带有气泡倒计时功能的地图页面。每个气泡在地图上随机生成,并每秒递减倒计时,直到倒计时结束,气泡会从页面上移除。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值