用单独的颜色显示国家/地区

Dly*_*lyx 5 java google-maps ios mapbox swift

我正在尝试创建一个 android 和 ios 应用程序,您可以在其中看到整个世界。我只需要以单独的颜色显示国家/地区。不需要城市、街道等。它应该看起来像这样:

例子

我不能使用静态图像,它需要为每个用户单独着色。

到目前为止我已经尝试过使用 Mapbox。但对于 Mapbox,我还没有找到动态样式。似乎它们必须使用 Mapbox Studio 提前创建。我尝试了带有图块图层的谷歌地图。但为此(据我所知)我需要重新创建整个世界。这将是一个巨大的努力。

所以它们都不符合我的需求。也许我错过了一个简单的技巧,但我对此感到非常沮丧。

非常感谢任何帮助!

Dav*_*pin 3

为了做到这一点,您必须做一些事情。首先,您需要从国际货币基金组织获取有关每个国家的人类发展指数得分的数据。幸运的是,您可以从联合国开发计划署人类发展 API 获取此数据:http: //ec2-54-174-131-205.compute-1.amazonaws.com/API/HDRO_API.php/indicator_id=137506/year =2017年

接下来,您必须弄清楚 HDI 表示发达、发展中、欠发达和最不发达。联合国开发计划署将人类发展指数分为四类(五类包括无法获得数据的国家):

  • 非常高:1.000 - 0.800
  • 高:0.700 - 0.799
  • 中:0.555 - 0.699
  • 低:0.350 - 0.554
  • 数据不可用

现在您需要查看此数据并在 MapBox Studio 中创建地图。您可以浏览 JSON 数据并为每个国家创建新样式(此处教程: https: //docs.mapbox.com/help/tutorials/style-single-country/),或者您可以解析 JSON 文件前端并添加应用程序中的样式。

如果您创建 MapBox 地图,则可以通过设置地图的 style 属性在您的应用程序中使用地图的样式。这是通过以下方法完成的:创建地图后,获取共享 URL,并在前端初始化时将地图的样式设置为此 URL。 点击右上角的“分享”

这是您的共享 URL,单击“使用”可查找有关如何使用此共享 URL 在前端设置地图样式的教程(iOS 和 Android)

使用共享 URL,您可以在前端创建地图。

iOS(斯威夫特):

var mapView = MGLMapView()
mapView.styleURL = URL(string: "mapbox://styles/davidchopin/cjtz90km70tkk1fo6oxifkd67")
Run Code Online (Sandbox Code Playgroud)

iOS(Objective-C):

// Replace the string in the URL below with your custom style URL from Mapbox 
//Studio.
// Read more about style URLs here: https://www.mapbox.com/help/define-style-url/
NSURL *styleURL = [NSURL URLWithString:@"mapbox://styles/davidchopin/cjtz90km70tkk1fo6oxifkd67"];
MGLMapView *mapView = [[MGLMapView alloc] initWithFrame:self.view.bounds
styleURL:styleURL];
Run Code Online (Sandbox Code Playgroud)

安卓(Java):

mapboxMap.setStyle(new Style.Builder().fromUrl("mapbox://styles/davidchopin/cjtz90km70tkk1fo6oxifkd67"), new 
Style.OnStyleLoaded() {
    @Override
    public void onStyleLoaded(@NonNull Style style) {

    // Custom map style has been loaded and map is now ready


    }
});
Run Code Online (Sandbox Code Playgroud)

安卓(科特林):

mapboxMap.setStyle(Style.Builder().fromUrl("mapbox://styles/davidchopin/cjtz90km70tkk1fo6oxifkd67")) {

    // Custom map style has been loaded and map is now ready

}
Run Code Online (Sandbox Code Playgroud)