当前位置:操作系统 > 安卓/Android >>

Android SDK:构建一个购物中心搜索的应用(二)-Points of Interest

本教程将探讨如何使用谷歌地图API来显示出信息点(POI),并使用手机提供的定位服务,来显示当前位置可搜索到的POI位置。这种情况下,我们应使用商场作为POI。
 
在本教程的第一部分,我们讨论了如何使用的MapView和实现位置监听器获得您的当前位置。在这一节中,我们将扩展上一节的内容,以显示你的当前位置和一些信息点(POI)的位置。我们将通过使用一个由Jeff Gifelt开发出来的外部的库。如果你还没有完成的上一节的教程,我强烈建议你先完成它。不过,如果你决定不,你也可以使用源文件为起点,开始本节的教程。
 
你应该注意到在上一节的教程中,我们已经介绍了如何获取你的当前位置。在这一节中,我们将直接编码位置佛罗里达大学(这仅仅是为了本教程,所以在这区域我们可以显示商场)。
 
由于我们将继续从上一节的教程开始,所以你应该打开该项目。
步骤1:显示位置信息
上一节最后一步,我们完成显示我们当前所在的位置,在此阶段让我们扩展显示了一些有关我们的当前位置的信息,如经度和纬度。
这个信息将被显示为半透明黑色背景的MapView顶部附近的白色文字。
打开的布局文件(main.xml),在位于MallFinder > res > layout > main.xml
在MapView结束标记之后,FrameLayout结束标记之前,添加下面的代码:
01
<LinearLayout
02
    android:orientation="horizontal"
03
    android:layout_width="fill_parent"
04
    android:layout_height="wrap_content"
05
    android:id="@+id/infoLinearLayout"
06
    android:clickable="true"
07
    android:onClick="centerToCurrentLocation">
08
    <TableLayout
09
        android:layout_width="fill_parent"
10
        android:layout_height="wrap_content"
11
        android:layout_marginTop="30dp"
12
        android:background="#97000000"
13
        android:padding="7sp">
14
        <TableRow>
15
            <TextView
16
            android:layout_width="fill_parent"
17
            android:layout_height="wrap_content"
18
            android:layout_weight="1"
19
            android:text="@string/latitude"
20
            android:id="@+id/latitudeText"
21
            android:textColor="#FFFFFF">
22
            </TextView>
23
            <TextView
24
            android:layout_width="fill_parent"
25
            android:layout_height="wrap_content"
26
            android:layout_weight="1"
27
            android:text="@string/longitude"
28
            android:id="@+id/longitudeText"
29
            android:textColor="#FFFFFF">
30
            </TextView>
31
        </TableRow>
32
        <TableRow>
33
            <TextView
34
            android:layout_width="fill_parent"
35
            android:layout_height="wrap_content"
36
            android:layout_weight="1"
37
            android:text="@string/accuracy"
38
            android:id="@+id/accuracyText"
39
            android:textColor="#FFFFFF">
40
            </TextView>
41
            <TextView
42
            android:layout_width="fill_parent"
43
            android:layout_height="wrap_content"
44
            android:layout_weight="1"
45
            android:text="@string/provider"
46
            android:id="@+id/providerText"
47
            android:textColor="#FFFFFF">
48
            </TextView>
49
        </TableRow>
50
    </TableLayout>
51
</LinearLayout>
 
你可能已经注意到LinearLayout指定了onclick方法,这方法用于半透明的LinearLayout被选中时,让MapView中心围绕在用户的当前位置。如果用户决定滚动的MapView想迅速返回其当前位置,这是很有用的。
在上述文件中,引用的一些字符串(以android:text=”@string…”开头的),这些字符串还没有创建,让我们的现在创建。
打开位于MallFinder > res > values > strings.xml 的strings.xml文件,并添加以下几行代码。
1
<string name="latitude">Latitude : </string>
2
<string name="longitude">Longitude : </string>
3
<string name="accuracy">Accuracy : </string>
4
<string name="provider">Provider : </string>
 
现在我们已经更新了用户界面,让我们更新MallFinderActivity.java类代码来显示我们的位置坐标。
打开MallFinderActivity.java文件,并在getLastLocation方法中添加以下代码:
1
((TextView)findViewById(R.id.providerText)).setText("Provider :" + getBestProvider());
更新setCurrentLocation方法包括以下行:
1
((TextView)findViewById(R.id.latitudeText)).setText("Latitude : " + String.valueOf((int)(location.getLatitude()*1E6)));
2
((TextView)findViewById(R.id.longitudeText)).setText("Longitude : " +  String.valueOf((int)(location.getLongitude()*1E6)));
3
((TextView)findViewById(R.id.accuracyText)).setText("Accuracy : " + String.valueOf(location.getAccuracy()) + " m");
最后,添加下面的方法:
1
public void centerToCurrentLocation(View view){
补充:移动开发 , Android ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,