MapView for Android で道路の色 (黄色) を変更する方法を探しています。メソッドをオーバーライドしてonDraw
から、各ピクセルを調べて変更することを考えましたが、メソッドは最終的なものです。
また、MapView を ViewGroup でラップしてから onDraw をオーバーライドしようと考えましたが、その方法がわかりません。
誰にもアイデアはありますか?
ありがとう。
MapView for Android で道路の色 (黄色) を変更する方法を探しています。メソッドをオーバーライドしてonDraw
から、各ピクセルを調べて変更することを考えましたが、メソッドは最終的なものです。
また、MapView を ViewGroup でラップしてから onDraw をオーバーライドしようと考えましたが、その方法がわかりません。
誰にもアイデアはありますか?
ありがとう。
現在 (正確な時期はわかりませんが、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>
その結果、次のようになります。
静的マップのスタイル パラメータを追加することもできます。
あなたが得た要求:
詳しくは公式ブログをご覧ください。
Google MapView の代わりに OpenStreetMap データを使用するosmdroidへの切り替えを検討し、ストリート カラー レンダリングのソース コードを変更することをお勧めします。