我正在使用BB Native SDK开发Blackberry 10移动应用程序。
我将地图部分添加到我的应用中。我正在使用C ++动态添加标记。
我想要的只是当点击标记时气泡apear,我想处理动作按钮部分以显示包含所点击的所有相对信息(海拔,经度,地址等)的新页面标记
任何人都可以帮我吗?
答案 0 :(得分:0)
您没有说明是否使用MapView对象来显示地图。如果您是,那么有两个信号与标记标题气泡上的手势相关联地发出:
您可以使用这两个信号中的一个来发布包含该信息的工作表。我使用第二个,因为按钮单击的正常行为是获取到标记位置的导航路径。如果您不提供该服务,您可以将该信号用于您的目的。
焦点标记的ID(标题所属的标记)将包含在MapView属性focusId中。使用此ID,您可以从MapData对象获取标记。我更喜欢为标记提供一个ID,允许直接访问从中提取MapData的数据存储,数据库中记录的主键等。
在我的一个应用程序中,我在QML中处理了captionLabelTapped()信号,如下所示:
onCaptionLabelTapped: {
console.log("Waypoint ID tapped " + focusedId);
app.invokeWaypointPage(focusedId);
}
invokeWaypointPage方法从另一个应用程序调用一张卡片:
void ApplicationUI::invokeWaypointPage(QString ident) {
InvokeManager* invokeManager = new InvokeManager();
InvokeRequest cardRequest;
//cardRequest.setTarget("ca.sarmobile.OurAirportsDb.invoke.waypointPage");
cardRequest.setAction("bb.action.VIEW");
cardRequest.setMimeType("x-aviation/wp-ident");
cardRequest.setData(ident.toAscii());
InvokeTargetReply* reply = invokeManager->invoke(cardRequest);
reply->setParent(this);
reply->deleteLater();
}
在这种情况下,标记ID是数据库中的项标识符(和主键)。如果您使用较小的数据集,可以将信息放在QMap中或使用XmlDataModel。
首先,您可以在C ++中获取纬度,经度和其他一些数据:
double lat = qobject_cast<GeoLocation*>(pMapView->mapData()->geographic(focusId))->latitude();
double lan = qobject_cast<GeoLocation*>(pMapView->mapData()->geographic(focusId))->longitude();
当然假设标记是GeoLocation,而不是Line或Polygon。