Отображение местоположения с адреса, хранящегося в БД - PullRequest
0 голосов
/ 02 июня 2018

Позвольте мне кратко объяснить, чего я хочу.У меня есть модуль, который содержит 2 страницы.Один предназначен для создания новой компании, а другой - для предварительного просмотра информации о компании + редактирования этой информации о компании.

Все работает отлично.Теперь, когда я щелкаю в своей таблице одну из этих компаний, она открывает «Изменить / IDOFORGANIZATIONHERE» и отображает всю информацию для выбранной организации (компании).

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

Я успешно внедрил Карты Google.

   this.gMapsService.getLatLan('London' )
          .subscribe(
            result => {
                this.__zone.run(() => {
                    this.lat = result.lat();
                    this.lng = result.lng();
                })
            },
            error => console.log(error),
            () => console.log('Geocoding completed!')
          );

В моем gMapsService у меня есть следующее

  import { Injectable, NgZone } from '@angular/core';
    import { GoogleMapsAPIWrapper } from '@agm/core';
    import { MapsAPILoader } from '@agm/core';
    import { Observable, Observer } from 'rxjs';
    import {} from '@types/googlemaps';

    declare var google: any;

    @Injectable()
    export class GMapsService extends GoogleMapsAPIWrapper{ 
        constructor(private __loader: MapsAPILoader, private __zone: NgZone) {
            super(__loader, __zone);
        }

        getLatLan(address) {
            console.log('Getting Address - ', address);
            let geocoder = new google.maps.Geocoder();
            return Observable.create(observer => {
                geocoder.geocode( { 'address': address}, function(results, status) {
                    if (status == google.maps.GeocoderStatus.OK) {
                        observer.next(results[0].geometry.location);
                        observer.complete();                    
                    } else {
                        console.log('Error - ', results, ' & Status - ', status);
                        observer.next({});
                        observer.complete();
                    }
                });
            })
        }
    }

Теперь, если вы посмотрите на первый фрагмент, на нем будет отображаться карта Google с центром Лондона, и это тоже отлично работает.

Теперь я хочу изменить эту строку Лондон на значение информации компании, например:

organization.address
organization.city
organization.postalcode
organization.countryname

Если я напишу это следующим образом, код this.gMapsService.getLatLan (this.address) или this.gMapsService.getLatLan (organization.address) успешно компилируется, но в консоли я вижу этот адрес, которыйпередаваемое значение «неопределено».

Однако мой адрес хорошо отображается в моей HTML-части сети, где написано

Address: {{organization ? organization.address : ''}}<br>

Теперь мне интересно, как превратить этот текст, который отображается после адреса: в строку, которую необходимо передать вместе с функцией getLatLan.

Я попытался сделать

let fulladdress = organization.address + organization...bla bla и передает this.fulladdress, но он по-прежнему отображает этот адрес, почтовый индекс, город не определен

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 03 июня 2018

Я исправил это самостоятельно, подписав данные об организации и в функции, хотя это было выполнено в ngOnInit(){}.

В любом случае, спасибо.

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