Dynami c изображение не загружается на мобильный - Angular - PullRequest
0 голосов
/ 26 апреля 2020

Я пытался загрузить динамическое c изображение на свой веб-сайт, но оно работает только в браузере моего компьютера. Если я открою сайт с помощью смартфона, изображение не будет загружаться.

<div class="d-inline-block">
   <img class="d-inline" 
        src="http://openweathermap.org/img/wn/{{ 
        weather.icon }}@2x.png" alt="weather"
    />
   <span class="main_description">{{ weather.short_climate_desc }}, 
   </span>
   <span class="detailed_description">{{ weather.detail_climate_desc }}
   </span>
</div>

До того, как оно было загружено правильно, но после того, как я реализовал эту функцию, я замечаю ошибку.

HOME.COMPONENT .TS

getGeoLocation() {
    if(navigator.geolocation) {
      navigator.geolocation.getCurrentPosition((geoPosition) => {
        this.weatherService.getInitialLocation(geoPosition.coords.latitude, geoPosition.coords.longitude)
        .subscribe(data => {
          this.changeBG(this.dayOrNight(
            this.pegue_data_local(data.timezone),
            this.pegue_nascer_e_por_do_sol(data.timezone, data.sys.sunrise),
            this.pegue_nascer_e_por_do_sol(data.timezone, data.sys.sunset)))

          this.weather = new Weather
            (
              data.name,
              data.sys.country,
              new Date(this.pegue_data_local(data.timezone)),
              data.weather[0].icon,
              data.weather[0].main,
              data.weather[0].description,
              Math.round(data.main.temp),
              this.meterSecondTokmHour(data.wind.speed),
              this.getWindDirection(data.wind.deg),
              data.main.humidity,
              Math.round(data.main.feels_like),
              data.main.pressure,
              Math.round(data.main.temp_min),
              Math.round(data.main.temp_max),
              this.meterToKm(data.visibility),
              new Date(this.pegue_nascer_e_por_do_sol(data.timezone, data.sys.sunrise)),
              new Date(this.pegue_nascer_e_por_do_sol(data.timezone, data.sys.sunset))
            )
          this.displayInfo = true;

        }, (err) => { this.error2 = true; this.error = false; })
      }, (error)=> {
        console.log(error.message);
      })
    }
  }

WEATHERSERVICE.ts

  getInitialLocation(lat: number, lon: number): Observable<any> {
    console.log(`https://api.openweathermap.org/data/2.5/weather?lat=${lat}&lon=${lon}&appid=${this.apiKey}`);
    return this.http.get(`https://api.openweathermap.org/data/2.5/weather?lat=${lat}&lon=${lon}${this.unit}&appid=${this.apiKey}`);
  }

Я вызываю эту функцию на моем ngOnInit (). Когда сайт загружается, он получает местоположение пользователя, выполняет поиск и возвращает информацию о погоде для этого указанного c местоположения и создает объект.

Obs: отображаются все другие данные, НО изображение. Obs: Эта проблема возникает только на мобильных устройствах, изображение корректно загружается в обычных веб-браузерах.

Большое спасибо!

Ответы [ 3 ]

0 голосов
/ 26 апреля 2020

Можете ли вы попробовать это и посмотреть, что отображается. Я думаю, что значок пуст, и это объясняет, почему альтернативный текст появляется, потому что он не может найти путь к изображению

<div class="d-inline-block">
   <img *ngIf="weather && weather.icon" class="d-inline" 
    src="http://openweathermap.org/img/wn/{{ 
    weather.icon }}@2x.png" alt="weather"
/>
<span>weather.icon = {{weather.icon}}</span>
<span class="main_description">{{ weather.short_climate_desc }}, 
</span>
<span class="detailed_description">{{ weather.detail_climate_desc }}
</span>

И console.log (this.weather) для увидеть значение на рабочем столе, и вы можете отобразить его на мобильном телефоне, чтобы получить все его поля

<span>{{this.weather | json}}</span>
0 голосов
/ 03 мая 2020

Я выяснил в чем проблема. Я просто должен был добавить и "S" в конце ссылки на изображение. вместо http я использовал https.

Надеюсь, это поможет другим.

<div class="d-inline-block">
   <img *ngIf="weather && weather.icon" class="d-inline" 
    src="https://openweathermap.org/img/wn/{{ 
    weather.icon }}@2x.png" alt="weather"
/>
0 голосов
/ 26 апреля 2020

Можно ли это сделать с css и скрытыми хс? Если вы измените размер своего браузера до ширины мобильного, он все еще виден?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...