2016-11-07 1 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を使用してこの動作をエミュレートし、CameraPositiontargetzoom)に基づいて異なるjsonファイルを使用して、 bearingzoom)。例えば(latitude > 40.4場合とそうでないR.raw.style_json2を用いR.raw.style_jsonを使用してローカル道路スタイリング):

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)); 
     } 
    } 
} 
関連する問題