如何处理OSM的缩放级别?

时间:2015-07-28 14:15:41

标签: android openstreetmap zooming

我正在为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();

        }
    }
}

1 个答案:

答案 0 :(得分:1)

也许如果你能以某种方式检索从A点和B点的总距离,那么根据检索到的距离将其与某个缩放级别相关联,然后将地图视图设置为动画在中心。

让我们说A点和B点之间的直线是......

10公里。而且你知道在你的地图视图上以缩放级别显示10公里...... 16。

所以你可以考虑的是:

mapView.getController().setZoom(16);
mapView.getController().animateTo(myPoint1);

其中myPoint1是A点和B点之间的中心点,因此您可以查看整个路线。

我个人对Android开发很陌生,所以我不知道animateTo和setCenter之间的区别......但是我希望我的回答能够以某种方式让你想到如何解决你的问题?