我正在寻找一种方法来改变MapView for Android中的道路颜色(黄色)。我想过覆盖onDraw
方法,然后遍历每个像素并更改它,但方法是最终的。
我还想过用ViewGroup包装MapView,然后尝试覆盖它的onDraw,但我不知道该怎么做。
有没有人有想法?
感谢。
答案 0 :(得分:0)
我建议您考虑使用OpenStreetMap数据而不是Google MapView切换到osmdroid,并修改街道颜色渲染的源代码。
答案 1 :(得分:0)
现在(我不知道Google Maps API V3.0的确切时刻),Google Maps 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>
结果你应该得到:
您还可以为静态地图添加样式参数: 对
请求你:
有关详细信息,请参阅Official Blog。