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