2016-11-07 10 views
0

나는 Google 스타일 마법사를 사용하기 시작했고 지역별로 다른 색상으로 거리를 채색하는 것이 가능한지 궁금합니다 (예 : 지역 거리). 안드로이드 스튜디오 2.2에서 어떻게하는지 말해 줄 수 있다면 정말 고맙겠습니다.Google 스타일 마법사

답변

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_jsonlatitude > 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)); 
     } 
    } 
}