在Ubuntu上使用Map和Position APIs

本文详细介绍了在Ubuntu手机上如何使用Map和Position接口实现地图展示、获取当前位置等功能,包括使用QMLMap、PositionSource等组件,并提供了代码示例和运行效果展示。

我们知道Map和Position API是现代手机中非常重要的接口。那么我们如何在Ubuntu手机上使用它们呢?关于更多的Map及Position方面的资料可以在我们的developer网站找到:http://developer.ubuntu.com/api/qml/sdk-1.0/QtLocation.PositionSource/


1)使用MAP接口


我们可以直接使用如下的QML Map来实现MAP的功能:

            Map {
                id: map
                plugin : Plugin {
                    name: "osm"
                }
                anchors.fill: parent
                zoomLevel: 15
                center: QtPositioning.coordinate(39.9289 , 116.3883)

                Label {
                        anchors { top: parent.top; left: parent.left; margins: units.gu(2) }
                        text: "Position is: (" + me.position.coordinate.latitude + ", " +
                                me.position.coordinate.longitude + ")";
                        fontSize: "large"
                        color: "red"
                    }
            }

在这里我们使用了我们伟大祖国的北京地址经纬度坐标(39.9289,116.3883)。同时我们必须指出的是,我们必须使用名叫"osm"的plugin接口。以前一下诺基亚的手机,使用的是名为"nokia"的plugin。为了正确使用这个接口,我们必须在QML文件中调用如下的库:

import QtLocation 5.0
import QtPositioning 5.0

如果要在手机上运行,我们必须加入相应的安全policy。



运行我们的程序,我们可以看到如下的结果:




2)使用Position接口

我们可以通过如下的方式得到我们所在的位置:

            PositionSource {
                 id: me
                 active: true
                 updateInterval: 1000
                 onPositionChanged: {
                     console.log("lat: " + position.coordinate.latitude + " longitude: " +
                                 position.coordinate.longitude);
                     console.log(position.coordinate)
                 }
             }

为了能够显示我们所在的位置,我们也可以把我们上面的程序做一个修改。我们可以把把地图的中心位置设为我们得到的当前位置。修改后的程序为:

            Map {
                id: map
                plugin : Plugin {
                    name: "osm"
                }
                anchors.fill: parent
                zoomLevel: 12
                center: me.position.coordinate
//                center: QtPositioning.coordinate(39.9289 , 116.3883)

                Label {
                        anchors { top: parent.top; left: parent.left; margins: units.gu(2) }
                        text: "Position is: (" + me.position.coordinate.latitude + ", " +
                                me.position.coordinate.longitude + ")";
                        fontSize: "large"
                        color: "red"
                    }
            }

同时我们在Map里用红色的字体显示当前的位置。 运行的结果显示在如下的图中。我们可以改变zoomLevel来看不同的大小:



3)使用MapCircle来显示中心点


虽然我们在上面已经使用了地图来显示当前的位置,但我们还是想用一个明显的标志来显示当前的位置。这里我们用MapCircle来做这件事。这样我们的代码如下:

           Map {
                id: map
                plugin : Plugin {
                    name: "osm"
                }
                anchors.fill: parent
                zoomLevel: 12
                center: me.position.coordinate
                //                center: QtPositioning.coordinate(39.9289 , 116.3883)

                MapCircle {
                    center: me.position.coordinate
                    radius: units.gu(20)
                    color: "red"
                }

                Label {
                    anchors { top: parent.top; left: parent.left; margins: units.gu(2) }
                    text: "Position is: (" + me.position.coordinate.latitude + ", " +
                          me.position.coordinate.longitude + ")";
                    fontSize: "large"
                    color: "red"
                }
            }

运行的结果如下:



源码在如下网址可以找到:


在MX4手机上运行的显示图片为:




这个显示的照片在我的家的附近,应该是准确的地址。我是使用wifi定位的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值