Яркие загрузочные плитки на карте с темным стилем выглядят не очень хорошо. Есть ли способ изменить цвет загружаемых цветов?
Как установить цвет плитки google map?
Ответ 1
Создайте mapLabelStyle.json
в своем приложении raw folder
. Скопируйте этот стиль json в этот файл.
[
{
"elementType": "labels",
"stylers": [
{
"lightness": 5
},
{
"visibility": "simplified"
}
]
},
{
"elementType": "labels.text",
"stylers": [
{
"color": "#400040" //You can change color of your choice
}
]
}
]
Затем установите стиль, используя приведенный ниже код.
GoogleMap.setMapStyle(MapStyleOptions.loadRawResourceStyle(this,R.raw.mapLabelStyle));
Ответ 2
Вы можете использовать GoogleMap.setMapStyle
для изменения темы карты, попробуйте сделать это,
try {
// Customise the styling of the base map using a JSON object defined
// in a raw resource file.
boolean success = googleMap.setMapStyle(
MapStyleOptions.loadRawResourceStyle(
this, R.raw.style_json));
if (!success) {
Log.e(TAG, "Style parsing failed.");
}
} catch (Resources.NotFoundException e) {
Log.e(TAG, "Can't find style. Error: ", e);
}
Вы можете получить json файл с этого официального сайта стиля карты, и вы можете поместить этот json файл в свою исходную папку приложения
Полное объяснение стилизации карты в андроиде можно найти в официальном сайте
Пример style_json
[
{
"elementType": "geometry",
"stylers": [
{
"color": "#212121"
}
]
},
{
"elementType": "labels.text.fill",
"stylers": [
{
"color": "#757575"
}
]
},
{
"elementType": "labels.text.stroke",
"stylers": [
{
"color": "#212121"
}
]
},
{
"featureType": "administrative.country",
"elementType": "labels.text.fill",
"stylers": [
{
"color": "#9e9e9e"
}
]
},
{
"featureType": "administrative.locality",
"elementType": "labels.text.fill",
"stylers": [
{
"color": "#bdbdbd"
}
]
},
{
"featureType": "poi",
"elementType": "labels.text.fill",
"stylers": [
{
"color": "#757575"
}
]
},
{
"featureType": "poi.park",
"elementType": "geometry",
"stylers": [
{
"color": "#181818"
}
]
},
{
"featureType": "poi.park",
"elementType": "labels.text.fill",
"stylers": [
{
"color": "#616161"
}
]
},
{
"featureType": "poi.park",
"elementType": "labels.text.stroke",
"stylers": [
{
"color": "#1b1b1b"
}
]
},
{
"featureType": "road",
"elementType": "geometry.fill",
"stylers": [
{
"color": "#2c2c2c"
}
]
},
{
"featureType": "road",
"elementType": "labels.text.fill",
"stylers": [
{
"color": "#8a8a8a"
}
]
},
{
"featureType": "road.arterial",
"elementType": "geometry",
"stylers": [
{
"color": "#373737"
}
]
},
{
"featureType": "road.highway",
"elementType": "geometry",
"stylers": [
{
"color": "#3c3c3c"
}
]
},
{
"featureType": "road.highway.controlled_access",
"elementType": "geometry",
"stylers": [
{
"color": "#4e4e4e"
}
]
},
{
"featureType": "road.local",
"elementType": "labels.text.fill",
"stylers": [
{
"color": "#616161"
}
]
},
{
"featureType": "transit",
"elementType": "labels.text.fill",
"stylers": [
{
"color": "#757575"
}
]
},
{
"featureType": "water",
"elementType": "geometry",
"stylers": [
{
"color": "#000000"
}
]
},
{
"featureType": "water",
"elementType": "labels.text.fill",
"stylers": [
{
"color": "#3d3d3d"
}
]
}
]
Ответ 3
Попробуйте это
map = new GMap2(document.getElementById("map"), { backgroundColor: "#000000" });
Ответ 4
Вы говорите в комментарии "Я кодирую собственное приложение для Android", но это не отражено в ваших тегах (андроид, google-maps) или заголовок или вопрос.
Если вы используете Ionic native 4.0 Framework ionicframework, то:
setBackgroundColor(color); //Specifies the background color of the app.
Ответ 5
Концепция:
Плитка прямоугольная в strcuture и содержит данные изображения. Tile
(ссылка) предоставляется TileProvider
(ссылка). TileProvider
- это класс, который предоставляет изображения фрагментов для TileOverlay
(ссылка).
Примечание. Наложение прозрачно в природе, которое имеет оси x, y и z. Это похоже на прозрачное стекло перед вами.
TileProvider предоставляет Tile прямо за TileOverlay, как и вы ставите свою книгу под прозрачное стекло. В z-оси TileOverlay
имеются такие слои, как GroundOverlays
, Circles
, Polylines
и Polygons
. Это означает, что GroundOverlays
находится на последнем уровне, и он наиболее непрозрачен. Вы предоставляете свое настроенное изображение и меняете цвет в GroundOverlay
. Вы также сохраняете все свойства прозрачности, видимости и других свойств верхнего слоя. Таким образом, вы меняете цвет плитки.
Теперь ваша главная задача - создать свой настраиваемый GroundOverlay.
Изображение GroundOverlay
предоставляется как BitmapDescriptor
. Вы используете BitmapDescriptorFactory
для создания пользовательского образа BitmapDescriptor
, как показано ниже.
BitmapDescriptor icon = BitmapDescriptorFactory.fromResource(R.drawable.current_position_tennis_ball)
/* Вы видите, current_position_tennis_ball drawable resource
, теперь вы использовали в качестве цвета Tile
*/
Реализация:
Примечание: MOON_MAP_URL_FORMAT - это изображение enter code here
jpg, а TileProvider
ссылается на это изображение (фактически настроенное изображение)
private static final String MOON_MAP_URL_FORMAT =
"http://mw1.google.com/mw-planetary/lunar/lunarmaps_v1/clem_bw/%d/%d/%d.jpg";
/* поставьте яркий jpg выше */
TileProvider tileProvider /* ultimately it is an image */ = new UrlTileProvider(256, 256) {
@Override
public synchronized URL getTileUrl(int x, int y, int zoom) {
// The moon tile coordinate system is reversed. This is not normal.
int reversedY = (1 << zoom) - y - 1;
String s = String.format(Locale.US, MOON_MAP_URL_FORMAT, zoom, x, reversedY);
URL url = null;
try {
url = new URL(s);
} catch (MalformedURLException e) {
throw new AssertionError(e);
}
return url;
}
};
Вы можете увидеть полный исходный код здесь.