我正在为Android开发一个app,它应该使用OpenStreetMap(OSM)来指示。
我的问题是,当用户输入源地址和目标地址时,我似乎找不到合适的API函数来修复地图的缩放级别。
到目前为止,显示的地图仅显示计算路径的一部分。
我想修复缩放级别,使整个路径适合屏幕。
有人可以给我一个提示,我可以找到适当的文件吗?
我的代码
这是我的代码:
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/buttonSearchDest"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:layout_weight="0"
android:text="@string/GetDirection"/>
</LinearLayout>
protected void onPostExecute(List foundAdresses){
if (foundAdresses == null) {
Toast.makeText(getApplicationContext(), "Geocoding error", Toast.LENGTH_SHORT).show();
} else if (foundAdresses.size() == 0) {
Toast.makeText(getApplicationContext(), "Address not found.", Toast.LENGTH_SHORT).show();
} else {
Address address = foundAdresses.get(0);
String addressDisplayName = address.getExtras().getString("display_name");
if (mIndex == START_INDEX){
startPoint = new GeoPoint(address.getLatitude(), address.getLongitude());
markerStart = updateItineraryMarker(markerStart, startPoint, START_INDEX,
R.string.departure, R.drawable.marker_departure, -1, addressDisplayName);
map.getController().setCenter(startPoint);
} else if (mIndex == DEST_INDEX){
destinationPoint = new GeoPoint(address.getLatitude(), address.getLongitude());
markerDestination = updateItineraryMarker(markerDestination, destinationPoint, DEST_INDEX,
R.string.destination, R.drawable.marker_destination, -1, addressDisplayName);
map.getController().setCenter(destinationPoint);
}
getRoadAsync();
}
}
}
答案 0 :(得分:1)
也许如果你能以某种方式检索从A点和B点的总距离,那么根据检索到的距离将其与某个缩放级别相关联,然后将地图视图设置为动画在中心。
让我们说A点和B点之间的直线是......
10公里。而且你知道在你的地图视图上以缩放级别显示10公里...... 16。
所以你可以考虑的是:
mapView.getController().setZoom(16);
mapView.getController().animateTo(myPoint1);
其中myPoint1是A点和B点之间的中心点,因此您可以查看整个路线。
我个人对Android开发很陌生,所以我不知道animateTo和setCenter之间的区别......但是我希望我的回答能够以某种方式让你想到如何解决你的问题?