9

angular2-google-maps ve en son Angular2 sürümü ile çalışıyorum. Bazı yerel harita bileşeni işlevlerini kendi dosyalarında maps.service.ts dosyalarına dönüştürmeye çalışıyorum. maps.service.tsAngular2 'google' ad alanı bulamıyor

getGeoLocation(lat: number, lng: number): Observable<google.maps.GeocoderResult[]> { 
    let geocoder = new google.maps.Geocoder(); 
    let latlng = new google.maps.LatLng(lat, lng); 
    let request = { latLng: latlng }; 
    return new Observable((observer: Observer<google.maps.GeocoderResult[]>) => { 
     geocoder.geocode({ request }, (
      (results: google.maps.GeocoderResult[], status: google.maps.GeocoderStatus) => { 
       if (status == google.maps.GeocoderStatus.OK) { 
        observer.next(results); 
        observer.complete(); 
       } else { 
        console.log('Geocoding service failed due to: ' +status); 
        observer.error(status); 
       } 
      } 
     )); 
    }); 
} 

kullandığım çalıştığımda alıyorum sorunu google değişken kabul edilmesi olmamasıdır: gibi bir şey içine

map.component.ts

getGeoLocation(lat: number, lng: number) { 
if (navigator.geolocation) { 
    let geocoder = new google.maps.Geocoder(); 
    let latlng = new google.maps.LatLng(lat, lng); 
    let request = { latLng: latlng }; 
    geocoder.geocode(request, (results, status) => { 
     if (status == google.maps.GeocoderStatus.OK) { 
     let result = results[0]; 
     if (result != null) { 
      this.fillInputs(result.formatted_address); 
     } else { 
      alert("No address available!"); 
     } 
     } 
    }); 
} 
} 

Örneğin: Observer<google.maps.GeocoderResult[]>. Servis sınıfının dışında da declare var google: any; var.

google değişken map.componenet.ts içinde çalışır, ancak maps.service.ts içinde tanınmadı.

+0

Nereye "google" içe aktarıyorsunuz? AppModule içinde GünterZöchbauer @ –

+0

: 'AgmCoreModule.forRoot ({ apiKey: '--key--', kütüphaneler: [ 'yerleri'] }) 'için' google' sağlar hem de daktilo içe mi – Milo

+0

. Kodu bir yerden kopyalamış gibi görünüyor. Bir bağlantı gönderebilir misiniz? –

cevap

1

Sonunda bir şey olduğunu bilmiyordum sorunu, anladım typescript ithalatı sonra

declare var google: any; 

ekleyin. Hizmetlerime başvuruda bulunduğum bileşenim map.component.ts olarak belirtildi; hizmetlerim 'un sonunda s ile adlandırıldı. Dosyayı ve import ifadelerini değiştirdikten sonra her şey iyi çalıştı. Aynı sorun bakıyordu

29

Denedim:

declare var google: any; 

Ama bu benim için işe yaramadı.
Bu answer buldum ve benim için çalıştı.
Öncelikle emin olun Eğer google için typings yüklü --dev bayrağı kullanımdan kaldırılmıştır
npm install @types/googlemaps --save --dev

eşler. senin Kontrolör içinde Sonra npm install @types/googlemaps --save-dev

Ve kullanın

import {} from '@types/googlemaps'; 
+1

ile ilgili herhangi bir şey sağlamaz gibi görünüyor. Bu benim için çalıştı ... sadece Angular 2'de eklemek istiyorum, 'import {} 'den' 'types/googlemaps' '; shared.module.ts dosyasında 'ngui/map' konumundan import {NguiMapModule}; – newman

1

Ayrıca benim için çalışıyor:

İlk proje kök üzerinde komut google haritalar için typings yüklemek

npm install @types/googlemaps --save --dev 

Ve daha sonra aşağıdaki .ts bileşen dosyanıza ekleyin:

import {} from '@types/googlemaps';