腾讯地图SDK Android版开发 10 InfoWindow

腾讯地图SDK Android版开发 10 InfoWindow

  • 前言
  • 介绍
    • 默认风格
    • 自定义样式
    • 实现方式
    • 交互操作
    • 播放信息窗口的动画
    • 开启多窗口模式
  • 相关类和接口
    • 默认样式
      • MarkerOptions 类
      • Marker 类
      • TencentMap类
      • TencentMap.OnInfoWindowClickListener 接口类
    • 自定义样式
      • TencentMap 类
      • TencentMap.InfoWindowAdapter 接口
  • 示例
    • 界面布局
    • MapInfoWindow类
      • 常量
      • 成员变量
      • 初始化
      • 创建与移除覆盖物
      • 设置属性
      • 自定义样式
      • 加载与移除地图
    • MapInfoWindowActivity 类
      • 控件响应事件
    • 运行效果图

前言

前文介绍的腾讯地图添加Marker覆盖物的使用方法,本文重点介绍如何结合Marker使用InfoWindow展示更多信息。

介绍

信息窗口,是依附于Marker之上的展现元素,用于对Marker进行详细描述。

腾讯地图SDK默认提供的InfoWindow分标题和简述两部分,开发者也可以自定义InfoWindow,满足个性化场景的要求。

主要功能有:

  1. 默认信息窗口的显示和隐藏

  2. 创建一个自定义信息窗口

  3. 注册信息窗口的事件监听

  4. 播放信息窗口的动画

  5. 开启多窗口模式

默认风格

  • 使用MarkerOptions或者Marker来开启InfoWindow和设置信息内容。

  • 当点击Marker的时候,将显示InfoWindow

  • 通过Marker的接口显示和隐藏InfoWindow

自定义样式

TencenMap接口中,TencentMap.InfoWindowAdapter类用来提供自定义窗口能力。

该类提供两个接口:无边框自定义View和带边框自定义View。

当配置了InfoWindowAdapter时,MarkerOptions中的titlesnippet属性即失效。

实现方式

InfoWindow有两种实现方式,开发者需要针对不同场景选择适合的类型,展示信息窗口。

  1. Bitmap型,通过View布局转化成Bitmap,然后由渲染引擎绘制在地图上展示。
  2. View型,通过View布局直接在地图上展示。

两者之间的对比表格:

类型定制化动画性能复杂度
Bitmap有限
View支持
  • 默认InfoWindow使用的是Bitmap类型,该类型整体是一张图片。

  • 还可以通过MarkerOptions指定当前MarkerInfoWindow使用View类型。

交互操作

  • SDK内置了InfoWindow的点击事件。

  • 通过TencentMap.setOnInfoWindowClickListener设置Marker气泡点击事件监听。

  • 当使用View类型时,infoWindow的事件监听由View来接管处理。也就是可以给View的任何一个子控件设置点击事件。

播放信息窗口的动画

  • 当使用Bitmap类型时,InfoWindow的动画由引擎内部支持,仅支持有限的几种动画类型,比如:渐变、缩放、平移、旋转。
  • 当使用View类型时,InfoWindow的动画由View系统支持,可由开发者自定义处理。

开启多窗口模式

  • 默认情况下,多窗口模式是关闭的,不能在地图上显示多个信息窗口。
  • 通过TencentMap.enableMultipleInfowindow(boolean)接口来开启和关闭多窗口模式。
  • 开启多窗口模式之后,在多个Marker上点击,都能正常显示信息窗口。

相关类和接口

默认样式

MarkerOptions 类

  • getter
类型方法说明
booleanisInfoWindowEnable()获取标注的InfoWindow是否可以弹出气泡
booleanisViewInfowindow()获取此 marker 的 infowindow 是否用 view 实现 infowindow
StringgetSnippet()获取标注的InfoWindow(气泡)的内容
StringgetTitle()获得标注的InfoWindow(气泡)的标题
  • setter
类型方法说明
MarkerOptionsinfoWindowEnable(boolean enabled)设置标注是否可以弹出InfoWindow(气泡)
MarkerOptionsviewInfoWindow(boolean enabled)设置此 marker 的 infowindow 是否用 view 实现 infowindow
MarkerOptionstitle(String s)设置标注的InfoWindow(气泡)的标题,如果设置了 TencentMap.setInfoWindowAdapter(TencentMap.InfoWindowAdapter) 则失效
MarkerOptionssnippet(String snippet)设置标注的InfoWindow(气泡)的内容,如果设置了 TencentMap.setInfoWindowAdapter(TencentMap.InfoWindowAdapter) 则失效
MarkerOptionsinfoWindowAnchor(float u, float v)设置infowindow anchor point
MarkerOptionsinfoWindowOffset(int offsetX, int offsetY)设置InfoWindow的偏移,在基准(InfoWindow在Marker正上方中间处显示 —— 默认位置)上偏移 方向:向右,向下为正方向,向左,向上为负方向
MarkerOptionsinfoWindowCollisionBy(MarkerCollisionItem… infoWindowCollisions)设置InfoWindow 可被碰撞的类型,默认无碰撞关系

Marker 类

  • getter
类型方法说明
booleanisInfoWindowEnable()获取标注的InfoWindow是否可以弹出气泡
StringgetSnippet()获取标注的InfoWindow(气泡)的内容
StringgetTitle()获得标注的InfoWindow(气泡)的标题
  • setter
类型方法说明
voidsetSnippet(String snippet)设置标注的InfoWindow(气泡)的内容,如果设置了 TencentMap.setInfoWindowAdapter(TencentMap.InfoWindowAdapter) 则失效
voidsetTitle(String s)设置标注的InfoWindow(气泡)的标题,如果设置了 TencentMap.setInfoWindowAdapter(TencentMap.InfoWindowAdapter) 则失效
voidsetInfoWindowEnable(boolean enabled)设置标注是否可以弹出InfoWindow(气泡)
voidsetInfoWindowAnchor(float anchorU, float anchorV)设置 infowindow 的锚点,默认 (0.5f, 1)
voidsetInfoWindowOffset(int offsetX, int offsetY)设置 infowindow 坐标偏移
  • 显示,隐藏和更新InfoWindow
类型方法说明
booleanisInfoWindowShown()获取让标注InfoWindow(气泡)是否正在显示
voidshowInfoWindow()让标注显示InfoWindow(气泡)
voidhideInfoWindow()让标注隐藏InfoWindow(气泡)
voidrefreshInfoWindow()更新infowindow

TencentMap类

类型方法说明
voidenableMultipleInfowindow(boolean enable)设置地图是否允许多InfoWindow模式,默认是false(只允许显示一个InfoWindow) 注意:此方法需要在addMarker之前调用。
voidsetOnTapMapViewInfoWindowHidden(boolean enable)点击地图其他区域时,InfoWindow是否需要隐藏
voidsetOnInfoWindowClickListener(TencentMap.OnInfoWindowClickListener listener)设置Marker气泡点击事件监听接口

TencentMap.OnInfoWindowClickListener 接口类

/*** 当 Marker 气泡窗口被点击时的回调*/
public interface OnInfoWindowClickListener {/*** InfoWindow被点击时回调函数* @param Marker 被点击的InfoWindow所属的 Marker*/void onInfoWindowClick(Marker Marker);/*** 当InfoWindow点击时,点击点的回调* @param windowWidth InfoWindow的宽度* @param windowHigh InfoWindow的高度* @param x 点击点在InfoWindow的x坐标点* @param y 点击点在InfoWindow的y坐标点*/void onInfoWindowClickLocation(int windowWidth, int windowHigh, int x, int y);
}

自定义样式

TencentMap 类

类型方法说明
voidsetInfoWindowAdapter(TencentMap.InfoWindowAdapter infoWindowAdapter)设置气泡样式接口

TencentMap.InfoWindowAdapter 接口

类型方法说明
ViewgetInfoContents(Marker marker)自定义气泡的标题和内容
ViewgetInfoWindow(Marker marker)自定义整个气泡的InfoWindow
/*** 自定义 Marker气泡样式接口*/
public interface InfoWindowAdapter {/*** 自定义整个气泡的InfoWindow* @param Marker 当前要弹出InfoWindow的 Marker*               每个 marker 应返回自己的 view,不同 marker 在使用相同的 view 时会报错* @return View*/View getInfoWindow(Marker Marker);/*** 自定义气泡的标题和内容* @param Marker 当前要弹出InfoWindow的 Marker*               每个 marker 应返回自己的 view,不同 marker 在使用相同的 view 时会报错* @return View*/View getInfoContents(Marker Marker);
}

示例

界面布局

在这里插入图片描述

  • 布局文件
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context="MapInfoWindowActivity"><com.tencent.tencentmap.mapsdk.maps.TextureMapViewandroid:id="@+id/mapview"android:layout_width="match_parent"android:layout_height="0dp"app:layout_constraintBottom_toTopOf="@id/bottomView"app:layout_constraintTop_toTopOf="parent" /><androidx.appcompat.widget.LinearLayoutCompatandroid:id="@+id/bottomView"android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="vertical"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintTop_toBottomOf="@id/mapview"><RadioGroupandroid:id="@+id/RadioGroup"android:layout_width="match_parent"android:layout_height="wrap_content"android:background="@android:color/background_dark"android:gravity="center_horizontal"android:orientation="horizontal"android:paddingHorizontal="10dp"><RadioButtonandroid:id="@+id/simple_mode"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:checked="true"android:onClick="setMarkerFlag"android:text="简单"android:textColor="@color/white"android:textStyle="bold" /><RadioButtonandroid:id="@+id/adapter_window_mode"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1.5"android:onClick="setMarkerFlag"android:text="适配器(窗口)"android:textColor="@color/white"android:textStyle="bold" /><RadioButtonandroid:id="@+id/adapter_content_mode"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1.5"android:onClick="setMarkerFlag"android:text="适配器(内容)"android:textColor="@color/white"android:textStyle="bold" /></RadioGroup><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_gravity="bottom|center"android:background="@android:color/background_dark"android:orientation="horizontal"android:paddingHorizontal="10dp"><CheckBoxandroid:id="@+id/multiple_info_window"android:layout_width="wrap_content"android:layout_height="wrap_content"android:onClick="setMultipleInfoWindow"android:text="多窗口"android:textColor="@color/white"android:textStyle="bold" /><RadioGroupandroid:layout_width="match_parent"android:layout_height="wrap_content"android:background="@android:color/background_dark"android:gravity="center_horizontal"android:orientation="horizontal"android:paddingHorizontal="10dp"><RadioButtonandroid:id="@+id/viewType"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:checked="false"android:onClick="setInfoWindowType"android:text="View类型"android:textColor="@color/white"android:textStyle="bold" /><RadioButtonandroid:id="@+id/bitmapType"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:checked="true"android:onClick="setInfoWindowType"android:text="Bitmap类型"android:textColor="@color/white"android:textStyle="bold" /></RadioGroup></LinearLayout></androidx.appcompat.widget.LinearLayoutCompat>
</androidx.constraintlayout.widget.ConstraintLayout>

MapInfoWindow类

  • 以下是MapInfoWIndows部分代码

常量

public static final String SIMPlE_MODE = "Simple";
public static final String ADAPTER_WINDOW_MODE = "AdapterWindowMode";
public static final String ADAPTER_CONTENT_MODE = "AdapterContentMode";public static final String VIEW_TYPE = "ViewType";
public static final String BITMAP_TYPE = "BitmapType";

成员变量

// 覆盖物列表
List<Removable> overlays = new ArrayList<>();// 选中的状态
String selectedMode = SIMPlE_MODE;
String selectedType = BITMAP_TYPE;

初始化

initEvent();
// 点击地图其他区域时,InfoWindow是否需要隐藏
map.setOnTapMapViewInfoWindowHidden(true);
private void initEvent() {map.setOnInfoWindowClickListener(new TencentMap.OnInfoWindowClickListener() {@Overridepublic void onInfoWindowClick(Marker marker) {showToast("单击InfoWindow");// InfoWindow被点击时回调函数// marker.hideInfoWindow();}@Overridepublic void onInfoWindowClickLocation(int windowWidth, int windowHigh, int x, int y) {// 当InfoWindow点击时,点击点的回调}});
}

创建与移除覆盖物

  • 创建覆盖物是设置InfoWindow是否用View实现
public void addMarkers() {List<LatLng> points = new ArrayList<>();points.add(new LatLng(39.97923, 116.357428));points.add(new LatLng(39.94923, 116.397428));points.add(new LatLng(39.97923, 116.437428));points.add(new LatLng(39.92353, 116.490705));points.add(new LatLng(40.023537, 116.289429));points.add(new LatLng(40.022211, 116.406137));// 设置此marker的InfoWindow是否用View实现boolean isView = VIEW_TYPE.equals(selectedType);int[] icons = BubbleIcons.Number;for (int i = 0; i < points.size(); ++i) {// 构建Marker图标BitmapDescriptor bitmap = BitmapDescriptorFactory.fromResource(icons[i]);// 构建MarkerOption,用于在地图上添加MarkerMarkerOptions option = new MarkerOptions(points.get(i)).icon(bitmap).title("标题" + (i + 1)).snippet("详细信息" + (i + 1)).viewInfoWindow(isView);// 在地图上添加Marker,并显示Marker marker = map.addMarker(option);overlays.add(marker);}
}public void removeOverlay() {// 清除地图上所有的标注类(Marker、Polyline、Polygon,TileOverlay除外)// map.clearAllOverlays();// 从地图移除覆盖物for (Removable overlay : overlays) {if (overlay instanceof Marker) {Marker marker = (Marker) overlay;marker.hideInfoWindow();}if (!overlay.isRemoved())overlay.remove();}overlays.clear();
}

设置属性

public void enableMultipleInfoWindow(boolean enable) {// 设置地图是否允许多InfoWindow模式map.enableMultipleInfowindow(enable);
}public void setSelectedMode(String flag) {selectedMode = flag;for (Removable overlay : overlays) {if (overlay instanceof Marker) {Marker marker = (Marker) overlay;// 让标注隐藏InfoWindow(气泡)marker.hideInfoWindow();}}switch (selectedMode) {case SIMPlE_MODE:map.setInfoWindowAdapter(null);break;case ADAPTER_WINDOW_MODE:map.setInfoWindowAdapter(new WindowModeAdapter());break;case ADAPTER_CONTENT_MODE:map.setInfoWindowAdapter(new ContentModeAdapter());break;}
}public void setSelectedType(String flag) {selectedType = flag;removeOverlay();addMarkers();
}

自定义样式

  • 自定义布局custom_infowindow.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@color/colorLightBlue"> <!--背景资源可以自己设置--><!--用于展示自定义信息窗的内容--><TextViewandroid:id="@+id/tv_title"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_horizontal"android:gravity="start|center"android:textColor="@color/black"android:textSize="18sp" /></LinearLayout>
  • WindowModeAdapterContentModeAdapter
private class WindowModeAdapter implements TencentMap.InfoWindowAdapter {@Overridepublic View getInfoWindow(Marker marker) {return createCustomInfoView(marker);}@Overridepublic View getInfoContents(Marker marker) {return null;}
}private class ContentModeAdapter implements TencentMap.InfoWindowAdapter {@Overridepublic View getInfoWindow(Marker marker) {return null;}@Overridepublic View getInfoContents(Marker marker) {return createCustomInfoView(marker);}
}private View createCustomInfoView(Marker marker) {View view = LayoutInflater.from(context).inflate(R.layout.custom_infowindow, null);TextView tvTitle = view.findViewById(R.id.tv_title);// 设置自定义信息窗的内容tvTitle.append(marker.getTitle() + "\n" + marker.getSnippet());return view;
}

加载与移除地图

public void onMapLoaded() {addMarkers();
}public void onMapDestroy() {removeOverlay();
}

MapInfoWindowActivity 类

  • 以下是MapInfoWindowActivity类部分代码

控件响应事件

  • 设置简单模式,窗口模式和内容模式
public void setMarkerFlag(View view) {boolean checked = ((RadioButton) view).isChecked();if (!checked)return;int id = view.getId();String flag;if (id == R.id.simple_mode)flag = mapInfoWindow.SIMPlE_MODE;else if (id == R.id.adapter_window_mode)flag = mapInfoWindow.ADAPTER_WINDOW_MODE;else if (id == R.id.adapter_content_mode)flag = mapInfoWindow.ADAPTER_CONTENT_MODE;elsereturn;mapInfoWindow.setSelectedMode(flag);
}
  • 设置多窗口
public void setMultipleInfoWindow(View view) {boolean checked = ((CheckBox) view).isChecked();int id = view.getId();if (id == R.id.multiple_info_window) {mapInfoWindow.enableMultipleInfoWindow(checked);}
}
  • 设置InfoWindow显示方式:View或Bitmap
public void setInfoWindowType(View view) {boolean checked = ((RadioButton) view).isChecked();if (!checked)return;int id = view.getId();String flag;if (id == R.id.viewType)flag = mapInfoWindow.VIEW_TYPE;else if (id == R.id.bitmapType)flag = mapInfoWindow.BITMAP_TYPE;elsereturn;mapInfoWindow.setSelectedType(flag);
}

运行效果图

简单适配器(窗口)适配器(内容)
在这里插入图片描述在这里插入图片描述在这里插入图片描述
自定义整个气泡的InfoWindow自定义气泡的标题和内容

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/418233.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SealSuite 一站式 IT 管理与办公安全解决方案,助力出海企业夯实数字化底座

数字化办公时代&#xff0c;企业升级 IT 基础设施&#xff0c;已不再是选择题&#xff0c;而是必答题。 数字化办公时代&#xff0c;企业为何要升级 IT 基础设施&#xff1f; 随着时代变化与科技进步&#xff0c;人们的工作方式也发生了巨大变化。如今&#xff0c;远程办公、全…

C#编程语言及.NET 平台快速入门指南

Office Word 不显示 Citavi 插件&#xff0c;如何修复&#xff1f;_citavi安装后word无加载项-CSDN博客 https://blog.csdn.net/Viviane_2022/article/details/128946061?spm1001.2100.3001.7377&utm_mediumdistribute.pc_feed_blog_category.none-task-blog-classify_ta…

重生奇迹MU老大哥剑士职业宝刀未老

重生奇迹MU中&#xff0c;老大哥剑士职业一直以来备受玩家们的喜爱。这个职业不仅拥有强大的攻击力、防御力和战斗技巧&#xff0c;而且还能够通过使用各种宝刀来增强自身的战斗能力。即便经过了多年的沉淀&#xff0c;老大哥剑士依然是一名宝刀未老的男人&#xff0c;仍然能够…

Java项目: 基于SpringBoot+mybatis+maven学科竞赛管理系统(含源码+数据库+毕业论文)

一、项目简介 本项目是一套基于SpringBootmybatismaven学科竞赛管理系统 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff0c;eclipse或者idea 确保可以运行&#xff01; 该系统功能完善、界面美观、操作简…

性能测试经典案例解析——政务查询系统

各位好&#xff0c;我是 道普云 一站式云测试SaaS平台。一个在软件测试道路上不断折腾十余年的萌新。 欢迎关注我的主页 道普云 文章内容具有一定门槛&#xff0c;建议先赞再收藏慢慢学习&#xff0c;有不懂的问题欢迎私聊我。 希望这篇文章对想提高软件测试水平的你有所帮…

linux 安装sar工具,centos7-sar工具的安装过程及其简单应用(1)

10时02分44秒 bond0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10时02分44秒 vnet3 1.00 8.50 0.19 5.52 0.00 0.00 0.00 10时02分44秒 eth0 19.00 11.50 2.83 2.31 …

通俗易懂理解Hive四种排序

前言 Hive的四种排序包括Sort By、Order By、Distribute By和Cluster By。有关这四种排序的区别&#xff0c;在大数据面试中可能会经常被问到&#xff0c;在我们很多人的实际应用中可能最常用的就是全局排序order by&#xff0c;因此对于其他几个排序理解并不准确&#xff0c;…

vue3集成sql语句编辑器

使用的是codemirror 安装 pnpm add codemirror vue-codemirror --savepnpm add codemirror/lang-sqlpnpm add codemirror/theme-one-dark使用 <template><codemirror v-model"configSql" placeholder"Code goes here..." ref"codemirrorR…

适合程序员在周末阅读的历史书籍:理解人性和世界

一、《人类简史&#xff1a;从动物到上帝》 这本书提供了对人类历史和社会发展的深刻洞察&#xff0c;帮助读者理解人类过去、现在和可能的未来。 《人类简史&#xff1a;从动物到上帝》是以色列历史学家尤瓦尔赫拉利&#xff08;Yuval Noah Harari&#xff09;创作的一部极具影…

【物理密度计工作原理图】密度大小与密度计浸没深度关系图

密度大小与密度计浸没深度关系图 绘制图像的好处&#xff1a; 直观展示数据&#xff1a;图形可以直观地展示数据之间的关系&#xff0c;使得理解和分析数据变得更加容易。 便于比较&#xff1a;通过图形可以快速比较不同液体密度下密度计的浸没深度变化。 科学验证&#xff…

glsl着色器学习(六)

准备工作已经做完&#xff0c;下面开始渲染 gl.viewport(0, 0, gl.canvas.width, gl.canvas.height);gl.clearColor(0.5, 0.7, 1.0, 1.0); gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);gl.enable(gl.DEPTH_TEST); gl.enable(gl.CULL_FACE);设置视口 gl.viewport(0,…

StarRocks Lakehouse 快速入门——Apache Iceberg

导读&#xff1a; StarRocks Lakehouse 快速入门旨在帮助大家快速了解湖仓相关技术&#xff0c;内容涵盖关键特性介绍、独特的优势、使用场景和如何与 StarRocks 快速构建一套解决方案。最后大家也可以通过用户真实的使用场景来了解 StarRocks Lakehouse 的最佳实践&#xff01…

判断给定的一个不限长的数字串大小变化趋势、经典面试题:猴子排成圈踢出求最后剩下大王编号以及Debian服务器php中安装IMAP扩展各种报错解决过程

一、判断给定的一个不限长的数字串大小变化趋势 自制了一道面试题&#xff1a;给定一个不限长的数字字符串&#xff0c;判断每一位数字的大小变化趋势是否是^或v趋势&#xff0c;如果是就返回true&#xff0c;如果不是就返回false。比如121即属于^&#xff0c;322129即属于v。这…

SSM健身俱乐部网站—计算机毕业设计源码25623

摘 要 大数据时代下&#xff0c;数据呈爆炸式地增长。为了迎合信息化时代的潮流和信息化安全的要求&#xff0c;利用互联网服务于其他行业&#xff0c;促进生产&#xff0c;已经是成为一种势不可挡的趋势。在健身俱乐部的要求下&#xff0c;开发一款整体式结构的健身俱乐部网站…

多维时序 | Matlab基于SSA-SVR麻雀算法优化支持向量机的数据多变量时间序列预测

多维时序 | Matlab基于SSA-SVR麻雀算法优化支持向量机的数据多变量时间序列预测 目录 多维时序 | Matlab基于SSA-SVR麻雀算法优化支持向量机的数据多变量时间序列预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab基于SSA-SVR麻雀算法优化支持向量机的数据多变…

​​NIFI汉化_替换logo_二次开发_Idea编译NIFI最新源码_详细过程记录_全解析_Maven编译NIFI避坑指南002

继续,执行pom.xml引入依赖以后,发现以下几种报错: 可以看到在下载aws-java-sdk-bundle 1.12.710版本的时候报错了 可以看到日志信息,就是在阿里云上下载的,因为阿里云上缺少这个jar包 aws-java-sdk-bundle-1.12.710.jar 这个jar包,我还特意去阿里云上查询了一下 https://deve…

结合Python与GUI实现比赛预测与游戏数据分析

在现代软件开发中&#xff0c;用户界面设计和数据处理紧密结合&#xff0c;以提升用户体验和功能性。本篇博客将基于Python代码和相关数据分析进行讨论&#xff0c;尤其是如何通过PyQt5等图形界面库实现交互式功能。同时&#xff0c;我们将探讨如何通过嵌入式预测模型为用户提供…

java基础-线程实现

文章目录 什么是线程线程的基本特性线程的状态线程的调度 线程的实现方式1. 继承 Thread 类2. 实现 Runnable 接口3. 使用 Callable 和 Future4. 使用 ExecutorService总结 什么是线程 线程&#xff08;Thread&#xff09;是计算机科学中的一个重要概念&#xff0c;它是操作系…

蔬菜识别数据集 蔬菜数据集 用于训练,有十种蔬菜,如图已经标注好的版本

数据集概述 该数据集包含十种常见的蔬菜&#xff1a;胡萝卜、包菜、水果辣椒、青瓜、南瓜、土豆、花菜和西红柿。数据集已经进行了精细的标注&#xff0c;适用于深度学习模型的训练&#xff0c;尤其是用于物体检测和分类任务。 数据集特点 种类多样&#xff1a;涵盖了八种蔬菜…