显示具有单独颜色的国家

时间:2019-04-29 21:53:16

标签: java ios swift google-maps mapbox

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

example

我不能使用静态图像,需要为每个用户分别为其着色。

到目前为止,我已经尝试使用Mapbox。但是使用Mapbox时,我还没有发现动态样式。似乎必须使用Mapbox Studio进行高级创建。 我尝试了带有图层的Google Maps。但是为此(据我了解),我将需要重新创建整个世界。那将是巨大的努力。

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

我们非常感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

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

接下来,您必须弄清HDI表示发达,发展中,欠发达和最不发达的含义。联合国开发计划署将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来完成的。 Click 'share' in the top-right corner

Here is your share URL, click 'use' to find tutorials on how to use this share URL to style your map on the front end (both iOS and Android)

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

iOS(快速):

var mapView = MGLMapView()
mapView.styleURL = URL(string: "mapbox://styles/davidchopin/cjtz90km70tkk1fo6oxifkd67")

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];

Android(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


    }
});

Android(科林):

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

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

}