长沙西贝莜面村的门店都分布在哪些位置?纯Java实现一个POI下载器一探究竟

目录

前言

一、在线地图查询

1、百度地图结果

2、高德地图结果

3、天地图结果

二、自助工具数据设置

1、POI大类设置

2、城市设置

3、参数设置

4、下载设置

三、自助工具下载

1、数据预览

2、本地文件展示

3、下载日志查阅

四、总结


前言

在长沙这座充满活力与魅力的城市中,美食文化犹如一颗璀璨的明珠,闪耀着独特的光芒。长沙不仅有着悠久的饮食传统,更汇聚了来自全国各地的美食品牌。这其中,也包括西贝莜面村。然而,近期西贝莜面村却因预制菜的使用问题引发了广泛的网络舆情。2025年,罗永浩公开质疑西贝使用预制菜,西贝创始人的强硬回应和情绪化言论,如将罗永浩称为"网络黑嘴""网络黑社会",进一步加剧了舆论对立。尽管西贝在舆论压力下采取了一些整改措施,如将部分中央厨房前置加工工艺调整到门店现场加工,承诺改用非转基因大豆油等,但这些调整仍显得较为被动,未能从根本上消除公众的疑虑。

2026年1月,西贝再次陷入舆情风波。其创始人在朋友圈披露西贝巨亏5亿元、关闭102家门店的困境,并强调自己"无海外资产、北京仅一套房",试图塑造"踏实做事却遭恶意攻击"的悲情形象。然而,这种表述并未获得公众的广泛同情,反而被认为是一种"博同情"的策略。罗永浩也对此进行了回应,指出企业困境并非仅因舆论攻击。这一系列事件表明,西贝在危机公关中暴露出诸多问题,早期的情绪化回应和不当措辞严重损害了品牌形象,导致公众信任度下降。尽管后续的调整有诚意,但未能从根本上解决与消费者之间的信任危机。

长沙作为湖南省的省会城市,地域广阔,交通繁忙,如何快速准确地找到西贝莜面村的门店?而随着科技的飞速发展,在线地图的应用为我们提供了极大的便利。通过在线地图,我们可以轻松地查看城市的各个角落,获取详细的地理位置信息和交通路线。这不仅节省了我们的时间和精力,还让我们能够更加便捷地探索城市的美食地图。本文将介绍使用在线地图和一个自己编写的在线地图工具来动态获取一个城市的门店信息地址,通过将结果输出为txt和cvs等不同的格式,为实现多源的数据输出创造了可能。如果大家对此有兴趣,可以来本文看看。

一、在线地图查询

本节我们将首先直接使用在线地图的方式来看百度、高德和天地图三个互联网平台的的西贝查询结果展示。让我们拭目以待。

1、百度地图结果

通过百度地图可以看到,百度目前通过西贝能查询到的还有8个地点。同时在查询结果中也能较详细的标注为闭店。

2、高德地图结果

接下来看看高德地图的查询结果:

通过高德地图可以看到的地图点位是6个,相对来说数量更好了。

3、天地图结果

最后来看,在天地图中可以查询西贝的地名地址大约有194条。当然,在天地图中,包含了喜被,西北等信息后,留下的门店也不多。通过这个点可以看到,系统西北作为关键词查询,回查到很多跟主体信息无关的地点信息。

二、自助工具数据设置

下面使用Java来开发一款自己实现的自助工具来自助下载POI信息,这里以下载高德地图为例。本次首先讲解系统的功能,在后续的讲解中会深入源码进行讲解,为了方便大家使用,这里采用桌面端软件的构建方式进行讲解。系统的配色以为主,需要在Pom中引入以下资源:

XML 复制代码
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.example</groupId>
  <artifactId>amap-poi-downloader</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>amap-poi-downloader</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <!-- FlatLaf主题 -->
    <dependency>
      <groupId>com.formdev</groupId>
      <artifactId>flatlaf</artifactId>
      <version>3.2.5</version>
    </dependency>
    <!-- Apache POI 用于Excel处理 -->
    <dependency>
      <groupId>org.apache.poi</groupId>
      <artifactId>poi-ooxml</artifactId>
      <version>5.2.3</version>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>3.3.0</version>
        <configuration>
          <archive>
            <manifest>
              <mainClass>com.example.AmapPOIDownloader</mainClass>
              <addClasspath>true</addClasspath>
              <classpathPrefix>lib/</classpathPrefix>
            </manifest>
          </archive>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <version>3.5.0</version>
        <executions>
          <execution>
            <id>copy-dependencies</id>
            <phase>package</phase>
            <goals>
              <goal>copy-dependencies</goal>
            </goals>
            <configuration>
              <outputDirectory>${project.build.directory}/lib</outputDirectory>
              <overWriteReleases>false</overWriteReleases>
              <overWriteSnapshots>false</overWriteSnapshots>
              <overWriteIfNewer>true</overWriteIfNewer>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>

1、POI大类设置

为了方便在页面上可以快速的选择POI大类,我们可以将高德地图的POI大类进行统一设置。将相关的信息整理成属性文件,配置文件列表如下:

bash 复制代码
# 格式:分类名称,分类编码
餐饮服务,050000
购物服务,060000
生活服务,070000
体育休闲服务,110000
医疗保健服务,080000
住宿服务,090000
风景名胜,110000
商务住宅,120000
政府机构及社会团体,130000
科教文化服务,140000
交通设施服务,150000
金融保险服务,160000
公司企业,170000
道路附属设施,180000
地名地址信息,190000
公共设施,200000
室内设施,970000
事件活动,990000

这里选取的POI分类都使用一级大类,在此不选择更下级的分类。当然,如果您需要更详细的下级分类,也可以在这个属性配置文件中进行添加或者删除即可。

在Java中使用Swing来设置以下组件:

java 复制代码
    private static final long serialVersionUID = 1L;
    
    // 组件定义
    private JPanel contentPane;
    private JTabbedPane tabbedPane;
    private JPanel dataPanel;
    private JPanel downloadPanel;
    private JPanel previewPanel;
    
    // API配置
    private JTextField apiKeyField;
    
    // 数据设置
    private JTextField keywordsField;
    private JComboBox<String> typesComboBox;
    private JComboBox<String> cityComboBox;
    private JComboBox<Boolean> cityLimitComboBox;
    private JComboBox<Boolean> childrenComboBox;
    private JTextField offsetField;
    private JTextField pageField;
    private JTextField totalPagesField;
    private JComboBox<String> extensionsComboBox;
    
    // 下载设置
    private JComboBox<String> fileFormatComboBox;
    private JTextField outputPathField;
    
    // 数据预览
    private JTable previewTable;
    private DefaultTableModel previewModel;
    private JScrollPane tableScrollPane;
    private JButton firstPageButton;
    private JButton prevPageButton;
    private JButton nextPageButton;
    private JButton lastPageButton;
    private JTextField currentPageField;
    private JLabel totalPageLabel;
    private int currentPage = 1;
    private int pageSize = 20;
    private int totalPages = 1;
    
    // 控制组件
    private JButton downloadButton;
    private JProgressBar progressBar;
    private JTextArea logArea;
    private JButton saveLogButton;
    private JButton openFileButton;

2、城市设置

同样的,将我们需要关注的城市信息也设置到一个城市属性配置文件中,默认的城市列表:

bash 复制代码
# 格式:城市名称,城市编码
北京,110000
上海,310000
广州,440100
深圳,440300
杭州,330100
成都,510100
武汉,420100
西安,610100
重庆,500000
南京,320100
天津,120000
苏州,320500
郑州,410100
长沙,430100
沈阳,210100
青岛,370200
济南,370100
东莞,441900
佛山,440600

下面介绍如何在页面中加载以上信息,核心代码如下:

java 复制代码
// city
gbc.gridx = 0;
gbc.gridy = row;
gbc.anchor = GridBagConstraints.EAST;
gbc.weightx = 0.2;
dataPanel.add(new JLabel("查询城市(city):"), gbc);
        
cityComboBox = new JComboBox<>(cityCodeMap.keySet().toArray(new String[0]));
gbc.gridx = 1;
gbc.gridy = row;
gbc.anchor = GridBagConstraints.WEST;
gbc.weightx = 0.8;
dataPanel.add(cityComboBox, gbc);

3、参数设置

下面来看下系统的参数设置,包含apikey的设置、请求参数的设置(查询关键字、查询城市、POI类型等),具体如下图所示:

4、下载设置

下载设置主要是包含两个方面的操作,第一个是选择下载文件的格式。目前支持三种格式,分别是txt、csv和excel等。第二个是设置离线文件的下载路径。具体设置界面如下:

三、自助工具下载

最后来介绍一下如何使用这个自助工具来进行数据的下载和预览展示,以及针对性的展示CVS格式的数据。

1、数据预览

当我们设置好在线地图的APIKey,同时选择好相应的请求参数和下载参数后。接下来就可以点击下载按钮进行数据的下载。点击下载后,同时可以看到页面的进度条在进行滚动刷新。当数据下载完成后,回弹出提示窗口,如下图所示:

与此同时,在页面的最后一个tab页的地方,也可以同时看到这些数据:

可以看到数据已经成功的下载下来,并且使用一个列表进行展示。在之前的内容介绍中,这里可以支持按照txt、csv、excel等方式进行下载,这里可以来看看不同的文件下载后的信息。

2、本地文件展示

上面是一个CSV格式的数据结果页面展示,再来看下TXT格式的文件:

通过这个表格其实可以比较直观的看到,在湖南省长沙市中。目前还有5家西贝的门店,而位于茶子山东路112号凯德·壹中心F3层的西贝(凯德壹中心店)和位于芙蓉中路一段303富兴世界金融中心5楼L509b-c的西贝(长沙富兴时代店)均已暂停营业。到目前能看到只剩下三家门店营业。分别是雨花区的西贝(长沙德思勤店)和岳麓区的西贝(长沙荟聚店)及西贝(梅溪新天地店)。

3、下载日志查阅

在程序运行过程中,会记录很详细的程序运行日志,我们不仅可以在程序界面上查看运行日志。同时也可以将运行日志进行另存为,方便在以后的工作中进行查看。

四、总结

以上就是本文的主要内容,本文将介绍使用在线地图和一个自己编写的在线地图工具来动态获取一个城市的门店信息地址,通过将结果输出为txt和cvs等不同的格式,为实现多源的数据输出创造了可能。如果大家对此有兴趣,可以来本文看看。本文涉及的软件使用的是比较原生的Java Swing的窗体来进行构建的,完全支持跨平台。关于源码和运行包,在后续的内容中进行介绍。行文仓促,定有不足之处,欢迎各位朋友在评论区批评指正,不胜感激。