MFC开发百度地图,发现鼠标一直在转圈,1s1个点往里面添加marker,也会出现转圈。后来发现是convertor.translate这个回调,哪怕回调执行内容是空的,也会转,整个就不回调,转圈就没有了
3条回答 默认 最新
关注 引自免费微信小程序:皆我百晓生
要解决这个问题,首先确保在
main.cpp
文件中包含了必要的头文件,并且已经正确地设置了应用程序的窗口大小和位置。-
初始化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(); }
-
设置Google Maps API Key:
// 在主函数之前导入Google Maps相关库 #include "google/maps/api/geocoding/Geocoder.h" // 设置API密钥 const char* apiKey = "YOUR_API_KEY";
-
创建Google Maps实例:
// 创建Google Maps实例 GoogleMap googleMap; googleMap.setApiKey(apiKey); googleMap.enableLocationUpdates(this);
-
添加Marker:
// 添加Marker到地图上 googleMap.addMarker(QGeoPoint(0, 0), new MarkerInfo());
-
处理鼠标移动事件:
void mouseMoveEvent(QMouseEvent *event) { if (event->buttons() & Qt::LeftButton) { googleMap.centerOn(event->pos().toPoint(), 15); // 调整中心点的位置 } else { qDebug() << "左键未按下"; } }
-
处理鼠标单击事件:
void mousePressEvent(QMouseEvent *event) { // 如果鼠标点击在Marker上,则移除Marker if (event->button() == Qt::RightButton && event->modifiers() == Qt::NoModifier) { googleMap.removeMarkerAt(event->pos().toPoint()); } }
-
处理转换器:
// 定义一个转换器,用于处理鼠标移动和单击事件 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); } };
-
调用转换器:
MouseConverter converter; connect(&converter, &MouseConverter::isMouseEnabledChanged, this, &MouseHandler::onIsMouseEnabledChanged); connect(&converter, &MouseConverter::isRightMouseButtonChanged, this, &MouseHandler::onIsRightMouseButtonChanged); connect(&converter, &MouseConverter::clickedPointsChanged, this, &MouseHandler::onClickedPointsChanged);
-
更新UI:
void onIsMouseEnabledChanged(bool enabled) { // 更新UI } void onIsRightMouseButtonChanged(bool rightMouseButton) { // 更新UI } void onClickedPointsChanged(const QVector<QPoint> &points) { // 更新UI }
通过以上步骤,应该可以解决鼠标在地图上的旋转问题。此外,根据实际需求,还可以进一步优化UI界面、调整地图样式等。
解决 无用评论 打赏 举报 编辑记录-
悬赏问题
- ¥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局部变量对蓝图不可见