4

MapView for Android で道路の色 (黄色) を変更する方法を探しています。メソッドをオーバーライドしてonDrawから、各ピクセルを調べて変更することを考えましたが、メソッドは最終的なものです。

また、MapView を ViewGroup でラップしてから onDraw をオーバーライドしようと考えましたが、その方法がわかりません。

誰にもアイデアはありますか?

ありがとう。

4

2 に答える 2

1

現在 (正確な時期はわかりませんが、Google Maps API V3.0 のようです) 、Maps Android API のStyled Map機能を使用すると簡単です。マップ スタイル JSON の準備には、Styling Withardを使用できます。また、すべてのマップ要素ではなく、必要な部分だけを JSON スタイル オブジェクトに追加することもできます。たとえば、黄色の道路 (青色のラベル) の場合、JSON ( /res/raw/map_style.json) は次のようになります。

[
  {
    "featureType": "road",
    "elementType": "geometry.fill",
    "stylers": [
      {
        "color": "#ffff00"
      }
    ]
  },
  {
    "featureType": "road",
    "elementType": "labels.text.fill",
    "stylers": [
      {
        "color": "#0000ff"
      }
    ]
  }

]

およびMainActyvity.javaマップフラグメントを使用:

public class MainActivity extends AppCompatActivity implements OnMapReadyCallback {

    private GoogleMap mGoogleMap;
    private MapFragment mapFragment;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mapFragment = (MapFragment) getFragmentManager()
                .findFragmentById(R.id.map_fragment);
        mapFragment.getMapAsync(this);
    }

    @Override
    public void onMapReady(GoogleMap googleMap) {
        mGoogleMap = googleMap;

        try {
            // Customise the styling of the base map using a JSON object defined
            // in a raw resource file.
            boolean success = mGoogleMap.setMapStyle(
                    MapStyleOptions.loadRawResourceStyle(
                            this, R.raw.map_style));

            if (!success) {
                Log.e(TAG, "Style parsing failed.");
            }
        } catch (Resources.NotFoundException e) {
            Log.e(TAG, "Can't find style. Error: ", e);
        }
        // Position the map's camera near Sydney, Australia.
        mGoogleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(50.4501,30.5234), 16.0f));

    }

}

activity_main.xls:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.test.just.googlemapsgeneral.activities.MainActivity">

    <fragment
        android:id="@+id/map_fragment"
        android:name="com.google.android.gms.maps.MapFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

</RelativeLayout>

その結果、次のようになります。

Android スタイルのマップ フラグメント

静的マップのスタイル パラメータを追加することもできます。

https://maps.googleapis.com/maps/api/staticmap?&key=[your_MAPS_API_KEY]¢er=50.4501,30.5234&zoom=16&size=640x640&style=feature:road|element:geometry|color:0xFFFF00

あなたが得た要求:

スタイル付き静的マップ

詳しくは公式ブログをご覧ください。

于 2017-11-17T11:37:20.260 に答える
0

Google MapView の代わりに OpenStreetMap データを使用するosmdroidへの切り替えを検討し、ストリート カラー レンダリングのソース コードを変更することをお勧めします。

于 2013-03-07T04:42:14.420 に答える