【问题标题】:Google Style Wizard谷歌样式向导
【发布时间】:2016-11-07 16:00:11
【问题描述】:

我开始使用 google 样式向导,我想知道是否可以根据确定的区域为街道(例如:当地街道)涂上不同的颜色。如果您能告诉我如何在 android studio 2.2 中执行此操作,我将不胜感激。

【问题讨论】:

    标签: android google-maps android-studio google-style-guide


    【解决方案1】:

    您需要定义一个json 文件来设置地图的样式,定义您想要设置样式的要素和样式器(在示例中,我将本地道路样式设置为红色)。

    style_json.json

    [
      {
        "featureType": "road.local",
        "elementType": "geometry",
        "stylers": [
          {
            "color": "#ff0000"
          }
        ]
      }
    ]
    

    然后你需要将样式应用到地图上:

    MapsActivity.java

    public class MapsActivity extends FragmentActivity implements OnMapReadyCallback {
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_maps);
    
            SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                    .findFragmentById(R.id.map);
            mapFragment.getMapAsync(this);
        }
    
        @Override
        public void onMapReady(GoogleMap googleMap) {
            googleMap.setMapStyle(
                    MapStyleOptions.loadRawResourceStyle(
                            this, R.raw.style_json));
        }
    }
    

    Here你可以找到样式参考。

    考虑到根据the documentation 样式仅适用于normal 地图类型。

    另请注意,此样式适用于整个地图。例如,您不能为美国设置红色的本地道路,为欧洲设置蓝色的本地道路,但您可以使用OnCameraIdleListener 模拟此行为,并使用基于@987654329 的不同json 文件设置地图样式@(targetzoombearingzoom)。例如(如果latitude > 40.4 使用R.raw.style_json 设计地方道路,否则使用R.raw.style_json2):

    public class MapsActivity extends FragmentActivity implements OnMapReadyCallback, GoogleMap.OnCameraIdleListener {
        private GoogleMap mMap;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_maps);
    
            SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                    .findFragmentById(R.id.map);
            mapFragment.getMapAsync(this);
        }
    
        @Override
        public void onMapReady(GoogleMap googleMap) {
            this.mMap = googleMap;
            mMap.setOnCameraIdleListener(this);
    
            LatLng ll1 = new LatLng(40.4, -3.7);
            mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(ll1, 17));
        }
    
        @Override
        public void onCameraIdle() {
            if (mMap.getCameraPosition().target.latitude > 40.4) {
                mMap.setMapStyle(
                        MapStyleOptions.loadRawResourceStyle(
                                this, R.raw.style_json));
            } else {
                mMap.setMapStyle(
                        MapStyleOptions.loadRawResourceStyle(
                                this, R.raw.style_json2));
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2013-07-21
      • 1970-01-01
      • 2018-04-12
      • 1970-01-01
      • 2011-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多