#angular #leaflet #ngx-leaflet
Вопрос:
Я знаю, что это было здесь уже несколько раз, но я не мог заставить эти ответы работать на меня.
Во-первых, импорт leaflet.css странный… Это не работает — angular.json
"styles": [
"src/styles.css",
"path/to/leaflet.css"
]
Это также не работает — src/styles.css
@import "path/to/leaflet.css"
Это работает — map.component.ts
styleUrls: ['./map.component.css', "path/to/leaflet.css"]
Почему только при импорте через компонент css фактически импортируется? В первых двух случаях он не жалуется на неправильный путь или что-то еще.
Теперь даже при успешном импорте leaflet.css карта отображает около половины плиток. Кто-то сказал, что изменение размера окна устраняет проблему. Но изменение размера окна делает карту серой…
Остальная часть кода:
import { LeafletModule } from '@asymmetrik/ngx-leaflet';
@NgModule({
declarations: [
AppComponent,
MapComponent
],
imports: [
BrowserModule,
LeafletModule
],
providers: [],
bootstrap: [AppComponent]
})
//...
<div id="map"
leaflet
[leafletOptions]="options"
[leafletLayersControl]="layers"
></div>
//...
layers = {
baseLayers: {
"OSM": tileLayer(MapConfig.layers.osm.url, {
attribution: MapConfig.layers.osm.attribution
}),
"ArcGIS": tileLayer(MapConfig.layers.arcgis.url, {
attribution: MapConfig.layers.arcgis.attribution
}),
//...
},
overlays: {}
}
options = {
center: latLng(MapConfig.defaultLocation[0], MapConfig.defaultLocation[1]),
zoom: MapConfig.zoom,
layers: [this.layers.baseLayers["OSM"]]
}
Вот полный пример кода:
https://3fjni.csb.app /
Комментарии:
1. Привет, вероятно, было бы большим улучшением вашего вопроса, если бы вы могли предоставить пример воспроизведения в реальном времени, например, с использованием CodeSandbox или StackBlitz.
2. @ghybs спасибо за совет. Я обновил вопрос
Ответ №1:
Что происходит, так это то, что ваши 2 первые попытки загрузки CSS-листовки действительно работают.
3-я попытка (в компоненте styleUrls
) на самом деле не работает. Но может показаться, что ситуация лучше, чем в предыдущих случаях, потому что теперь вы можете видеть некоторые плитки… которые на самом деле скремблированы по всей вашей странице из-за отсутствия CSS.
В первых 2 случаях вы не видите свою карту (создавая впечатление, что она не работает или что импорт CSS не удался), потому что вы определили высоту контейнера карты как 100%; но это означает 100% от его родительской высоты, которая равна 0, если не определена явно. Рисование границы на контейнере карты делает проблему более заметной. И установка фиксированной высоты (например, 400 пикселей), чтобы ваша карта листовки отображалась правильно.
Комментарии:
1. боже, я не могу поверить, что я этого не заметил… Спасибо