weixin_41773229 2024-06-26 15:11 采纳率: 0%
浏览 5

MFC开发百度地图,发现鼠标一直在转圈

MFC开发百度地图,发现鼠标一直在转圈,1s1个点往里面添加marker,也会出现转圈。后来发现是convertor.translate这个回调,哪怕回调执行内容是空的,也会转,整个就不回调,转圈就没有了

  • 写回答

3条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-06-26 15:11
    关注

    引自免费微信小程序:皆我百晓生

    要解决这个问题,首先确保在main.cpp文件中包含了必要的头文件,并且已经正确地设置了应用程序的窗口大小和位置。

    1. 初始化Google Maps SDK

      // 导入必要的类库
      #include <QApplication>
      #include <QGuiApplication>
      #include <QQmlApplicationEngine>
      
      // 设置应用程序窗口尺寸和位置
      int main(int argc, char *argv[])
      {
          QApplication app(argc, argv);
          QGuiApplication::setWindowIcon(QIcon("icon.png"));
      
          // 初始化Google Maps SDK
          GoogleMapsInit();
      
          // 创建并显示应用程序窗口
          return app.exec();
      }
      
    2. 设置Google Maps API Key

      // 在主函数之前导入Google Maps相关库
      #include "google/maps/api/geocoding/Geocoder.h"
      
      // 设置API密钥
      const char* apiKey = "YOUR_API_KEY";
      
    3. 创建Google Maps实例

      // 创建Google Maps实例
      GoogleMap googleMap;
      googleMap.setApiKey(apiKey);
      googleMap.enableLocationUpdates(this);
      
    4. 添加Marker

      // 添加Marker到地图上
      googleMap.addMarker(QGeoPoint(0, 0), new MarkerInfo());
      
    5. 处理鼠标移动事件

      void mouseMoveEvent(QMouseEvent *event)
      {
          if (event->buttons() & Qt::LeftButton) {
              googleMap.centerOn(event->pos().toPoint(), 15); // 调整中心点的位置
          } else {
              qDebug() << "左键未按下";
          }
      }
      
    6. 处理鼠标单击事件

      void mousePressEvent(QMouseEvent *event)
      {
          // 如果鼠标点击在Marker上,则移除Marker
          if (event->button() == Qt::RightButton && event->modifiers() == Qt::NoModifier) {
              googleMap.removeMarkerAt(event->pos().toPoint());
          }
      }
      
    7. 处理转换器

      // 定义一个转换器,用于处理鼠标移动和单击事件
      class MouseConverter : public QObject
      {
          Q_OBJECT
      
          Q_PROPERTY(bool enabled READ isMouseEnabled NOTIFY isMouseEnabledChanged)
          Q_PROPERTY(bool rightMouseButton READ isRightMouseButton NOTIFY isRightMouseButtonChanged)
          Q_PROPERTY(QVector<QPoint> clickedPoints READ getClickedPoints NOTIFY clickedPointsChanged)
      
          bool isMouseEnabled;
          bool isRightMouseButton;
          QVector<QPoint> clickedPoints;
      
          MouseConverter(QObject *parent = nullptr)
              : QObject(parent),
                isMouseEnabled(false),
                isRightMouseButton(false),
                clickedPoints()
          {
          }
      
          void setEnabled(bool enable)
          {
              isMouseEnabled = enable;
          }
      
          void setRightMouseButton(bool enable)
          {
              isRightMouseButton = enable;
          }
      
          void addClickedPoint(const QPoint &point)
          {
              clickedPoints.append(point);
          }
      
          void removeClickedPoint(const QPoint &point)
          {
              clickedPoints.removeAll(point);
          }
      
          void emitIsMouseEnabledChanged(bool value)
          {
              qWarning() << "isMouseEnabled changed: " << value;
              emit isMouseEnabledChanged(value);
          }
      
          void emitIsRightMouseButtonChanged(bool value)
          {
              qWarning() << "isRightMouseButton changed: " << value;
              emit isRightMouseButtonChanged(value);
          }
      
          void emitClickedPointsChanged(const QVector<QPoint> &value)
          {
              qWarning() << "clickedPoints changed: ";
              emit clickedPointsChanged(value);
          }
      };
      
    8. 调用转换器

      MouseConverter converter;
      connect(&converter, &MouseConverter::isMouseEnabledChanged, this, &MouseHandler::onIsMouseEnabledChanged);
      connect(&converter, &MouseConverter::isRightMouseButtonChanged, this, &MouseHandler::onIsRightMouseButtonChanged);
      connect(&converter, &MouseConverter::clickedPointsChanged, this, &MouseHandler::onClickedPointsChanged);
      
    9. 更新UI

      void onIsMouseEnabledChanged(bool enabled)
      {
          // 更新UI
      }
      
      void onIsRightMouseButtonChanged(bool rightMouseButton)
      {
          // 更新UI
      }
      
      void onClickedPointsChanged(const QVector<QPoint> &points)
      {
          // 更新UI
      }
      

    通过以上步骤,应该可以解决鼠标在地图上的旋转问题。此外,根据实际需求,还可以进一步优化UI界面、调整地图样式等。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 6月26日

悬赏问题

  • ¥15 35114 SVAC视频验签的问题
  • ¥15 impedancepy
  • ¥15 在虚拟机环境下完成以下,要求截图!
  • ¥15 求往届大挑得奖作品(ppt…)
  • ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
  • ¥50 浦育平台scratch图形化编程
  • ¥20 求这个的原理图 只要原理图
  • ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
  • ¥20 微信的店铺小程序如何修改背景图
  • ¥15 UE5.1局部变量对蓝图不可见