나는 Google 스타일 마법사를 사용하기 시작했고 지역별로 다른 색상으로 거리를 채색하는 것이 가능한지 궁금합니다 (예 : 지역 거리). 안드로이드 스튜디오 2.2에서 어떻게하는지 말해 줄 수 있다면 정말 고맙겠습니다.Google 스타일 마법사
0
A
답변
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
을 사용하여이 동작을 에뮬레이트하고 CameraPosition
(target
, zoom
, zoom
)을 기반으로 다른 json
파일로지도를 스타일링 할 수 있습니다. 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));
}
}
}