【IT168技术】在本系列的上一讲中,我们学习了google map 使用的一些简单步骤,其中学习到了如何注册google map api以及如何使用mapview控件。在本讲中,将学习如何根据若干指定的地理位置(给出了经纬度),并在地图上用指定的方法进行弹出显示其地理位置详细信息,其中用到了一个不错的第三方气球标识类库。
步骤1 显示当前位置的信息
在上一讲中,其实我们已经调用获得了用户的当前位置的信息,现在我们需要将其在页面的顶部显示出来,首先打开main.xml,然后添加如下的代码:
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/infoLinearLayout"
android:clickable="true"
android:onClick="centerToCurrentLocation">
<TableLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:background="#97000000"
android:padding="7sp">
<TableRow>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/latitude"
android:id="@+id/latitudeText"
android:textColor="#FFFFFF">
</TextView>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/longitude"
android:id="@+id/longitudeText"
android:textColor="#FFFFFF">
</TextView>
</TableRow>
<TableRow>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/accuracy"
android:id="@+id/accuracyText"
android:textColor="#FFFFFF">
</TextView>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/provider"
android:id="@+id/providerText"
android:textColor="#FFFFFF">
</TextView>
</TableRow>
</TableLayout>
</LinearLayout>
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/infoLinearLayout"
android:clickable="true"
android:onClick="centerToCurrentLocation">
<TableLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:background="#97000000"
android:padding="7sp">
<TableRow>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/latitude"
android:id="@+id/latitudeText"
android:textColor="#FFFFFF">
</TextView>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/longitude"
android:id="@+id/longitudeText"
android:textColor="#FFFFFF">
</TextView>
</TableRow>
<TableRow>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/accuracy"
android:id="@+id/accuracyText"
android:textColor="#FFFFFF">
</TextView>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/provider"
android:id="@+id/providerText"
android:textColor="#FFFFFF">
</TextView>
</TableRow>
</TableLayout>
</LinearLayout>
在上面的代码中,读者可能会注意到在LinearLayout中,使用了onclick事件,其中调用了centerToCurrentLocation这个方法,这其实为用户提供了方便,当用户在地图中导航时,如果要快速返回地图的中心点,只需要点一下地图的空白区域即可。
在上面的代码中,我们还定义了很多文字的提示信息,这些要在strings.xml中进行定义,定义如下:
<string name="latitude">Latitude : </string>
<string name="longitude">Longitude : </string>
<string name="accuracy">Accuracy : </string>
<string name="provider">Provider : </string>
<string name="longitude">Longitude : </string>
<string name="accuracy">Accuracy : </string>
<string name="provider">Provider : </string>
现在,我们更新下程序,以在屏幕顶部显示当前位置的经纬度和地理位置提供者provider的信息,如下:
((TextView)findViewById(R.id.latitudeText)).setText("Latitude : " + String.valueOf((int)(currentLocation.getLatitude()*1E6)));
((TextView)findViewById(R.id.longitudeText)).setText("Longitude : " + String.valueOf((int)(currentLocation.getLongitude()*1E6)));
((TextView)findViewById(R.id.accuracyText)).setText("Accuracy : " + String.valueOf(location.getAccuracy()) + " m");
((TextView)findViewById(R.id.longitudeText)).setText("Longitude : " + String.valueOf((int)(currentLocation.getLongitude()*1E6)));
((TextView)findViewById(R.id.accuracyText)).setText("Accuracy : " + String.valueOf(location.getAccuracy()) + " m");
我们记得定义centerToCurrentLocation这个方法,该方法其实是调用了第一讲中的animateToCurrentLocation();方法,如下:
public void centerToCurrentLocation(View view){
animateToCurrentLocation();
}