当前位置: 首页 > 知识库问答 >
问题:

如何展示整个世界并在其上做标记?

缑桐
2023-03-14

我想展示整个世界的流行地图,并在上面标记。

我尝试使用谷歌地图,但它似乎(这里)不支持缩小到足以显示整个世界。

从维基百科上看(这里),地球的中心位于北纬30°00′东经31°00′,但这似乎是在埃及,它看起来不像世界地图的中心,即使在维基百科页面上也是如此:

我在这里也发现了一个类似的问题,所以我将其转换为Android代码:

    MapFragment mapFragment = (MapFragment) getFragmentManager().findFragmentById(R.id.mapFragment);
    mapFragment.getMapAsync(new OnMapReadyCallback() {
        @Override
        public void onMapReady(final GoogleMap googleMap) {
            LatLngBounds allowedBounds = new LatLngBounds(
                    new LatLng(-85, 180),    // bottom right corner
                    new LatLng(85, -180)    // top left corner of map
            );
            double k = 5.0f;
            double n = allowedBounds.northeast.latitude - k;
            double e = allowedBounds.northeast.longitude - k;
            double s = allowedBounds.southwest.latitude + k;
            double w = allowedBounds.southwest.longitude + k;
            LatLng neNew = new LatLng(n, e);
            LatLng swNew = new LatLng(s, w);
            LatLngBounds boundsNew = new LatLngBounds(swNew, neNew);
            googleMap.setLatLngBoundsForCameraTarget(boundsNew);
        }
    });

但它根本没有显示整个世界:

我也尝试过使用zoom(看这里),但它从未缩小到足以显示大陆:

googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(30, 31), 1));

我选择了“1”,因为文档中说“1”是“世界”的值:

以下列表显示了在每个缩放级别可以看到的大致详细程度:

1: 世界

如何在谷歌地图上显示整个世界?

或者,有没有什么好的替代方案可以只显示世界地图(静态图像也很好),并能够在上面放置标记?也许甚至使用VectorDrawable?

是否有我可以展示的图像,并在其上添加标记?

共有3个答案

农波涛
2023-03-14

这是一个使用Google静态地图API的可能解决方案

查询是:

https://maps.googleapis.com/maps/api/staticmap?size=510x480&center=0,0&zoom=1&scale=2&key=YOUR_KEY

只需使用大小参数来测试所需的视图。

柯星辰
2023-03-14

您可以在谷歌地图Android API中使用Lite模式查看整个世界。

可以在其上添加标记,就像使用“完整贴图”模式一样。

李凯定
2023-03-14

可以使用精简模式显示整个世界并在其上放置标记:

... 如果需要在视口中显示整个世界,最好使用Lite模式。

标记位于“部分”支持的功能中:

您可以添加标记并响应单击事件。还可以添加自定义标记图标。不可能让一个标记可以拖动。lite模式贴图上的标记是平面的,不能旋转。

此外,您还可以使用其他功能,如直线和多边形绘制等。

因此,使用MainActivity类似:

public class MainActivity extends AppCompatActivity {

    private static final String MAP_VIEW_BUNDLE_KEY = "MapViewBundleKey";

    private MapView mMapView;
    private GoogleMap mGoogleMap;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Bundle mapViewBundle = null;
        if (savedInstanceState != null) {
            mapViewBundle = savedInstanceState.getBundle(MAP_VIEW_BUNDLE_KEY);
        }

        mMapView = (MapView) findViewById(R.id.mapview);
        mMapView.onCreate(mapViewBundle);

        mMapView.getMapAsync(new OnMapReadyCallback() {
            @Override
            public void onMapReady(GoogleMap googleMap) {
                mGoogleMap = googleMap;
                mGoogleMap.addMarker(new MarkerOptions()
                        .position(new LatLng(31.755983, 35.212879))
                        .title("Jerusalem"));
            }
        });
    }

    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);

        Bundle mapViewBundle = outState.getBundle(MAP_VIEW_BUNDLE_KEY);
        if (mapViewBundle == null) {
            mapViewBundle = new Bundle();
            outState.putBundle(MAP_VIEW_BUNDLE_KEY, mapViewBundle);
        }
    }
}

activity\u main。xml(也可以通过GoogleMapOptions以编程方式为地图视图设置Lite模式。liteMode(true)):

<com.google.android.gms.maps.MapView android:id="@+id/mapview"
    xmlns:map="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    map:cameraZoom="1"
    map:mapType="normal"
    map:liteMode="true"
    />

你得到了这样的东西:

 类似资料:
  • Something important is almost never mentioned in all the literature about programming and software development, and as a result we sometimes misunderstand each other. 有一样非常重要的东西从来没有编程/软件开发书籍提到过, 因此我们有

  • 这个文档从底层描述了Chromium是如何展示网页的。请确认你已经读过多进程架构这篇文章。你会特别想要了解主要组件的框架。你也可能对多进程资源加载感兴趣,以了解网页是如何从网络中获取到的。 应用概念层 (关于这个阐述的原始Google文档是http://goo.gl/MsEJX,开放给所有@chromium.org的人编辑) 每个矩形代表了一个应用概念层,每一层都不了解上一层,也对上一层没有依赖。

  • 本文向大家介绍js显示世界时间示例(包括世界各大城市),包括了js显示世界时间示例(包括世界各大城市)的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了js显示世界时间的方法。分享给大家供大家参考,具体如下: 对JavaScript时间与日期显示感兴趣的朋友还可以参看本站在线工具: 在线世界各地时间查询 在线万年历日历 网页万年历日历 更多关于JavaScript相关内容可查看本站专题:《J

  • 通过前两节课的学习,想必你已经对Threejs的层级模型有了一定认识,那么本节课就在层级模型概念的基础上,继续给家讲解两个新的概念,即本地坐标系和世界坐标系。 如果你对本地坐标系和世界坐标系已经有了一定概念,那么可以直接访问模型的位置属性.position获得模型在本地坐标系或者说模型坐标系下的三维坐标,通过模型的.getWorldPosition()方法获得该模型在世界坐标下的三维坐标。 .ge

  • 在threejs中自定义了一个场景,该场景的原点由经纬度转换而来,创建了一条以原点为起点的线段,hover到线段上的时候如何计算hover点的经纬度? 获取到的经纬度与实际经纬度存在较大偏差

  • 问题内容: 如何以与IE,Firefox和Opera兼容的方式使访问者的浏览器使用JavaScript全屏显示? 问题答案: 这与您使用JavaScript进入全屏显示的时间非常接近: