谷歌风格向导

时间:2016-11-07 16:00:11

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

我开始使用谷歌风格的向导,我想知道是否可以按照确定的区域以不同的颜色着色街道(例如:本地街道)。如果你能告诉我如何在android studio 2.2中做到这一点,我将非常感激。

1 个答案:

答案 0 :(得分:0)

您需要定义一个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模拟此行为,并使用基于json个不同文件的地图设置样式在CameraPosition上{targetzoombearingzoom)。例如(如果R.raw.style_json使用latitude > 40.4并使用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)); } } } 样式化本地道路):

var mostFrequentColor = Cards.GroupBy(c => c.Color)
                             .OrderByDescending(x => x.Count())
                             .FirstOrDefault(y => y.Color)