2017-08-22 14 views
1

我試圖讓和冰組成的角4,它不會讓我呈現地圖所有..無法讀取空Bing地圖的特性「原型」和Angualar4

這是我的index.html文件:

<!doctype html> 
<html lang="en"> 
<head> 
    <meta charset="utf-8"> 
    <title>Microsoft</title> 
    <base href="/"> 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
    <link rel="icon" type="image/x-icon" href="favicon.ico"> 
    <script type='text/javascript' src='http://www.bing.com/api/maps/mapcontrol?branch=experime‌​ntal'></script> 
</head> 
<body onload="AppComponent.helloWorld()"> 
<div id="myMap"></div> 
    <app-root></app-root> 
</body> 
</html> 

這是我的組件:

export class AppComponent implements OnInit { 
    @ViewChild('myMap') myMap; 
    title = 'app'; 

    ngOnInit() { 
    if(Microsoft !== undefined){ 
    var map = new Microsoft.Maps.Map(this.myMap.nativeElement, { 
     credentials: 'key goes here' 
    }); 
    }} 
} 

組件的HTML文件:

<div #myMap style='width: 100%; height: 500px;'></div> 

我不知道我在做什麼錯。但我無法獲取地圖加載。它的引發無法讀取null錯誤的屬性'原型'。

+0

什麼是onload =「AppComponent.helloWorld()?它是否運行? – Vega

回答

0

我終於明白了。好吧,它其實是我的同事。

所以這個想法是等待文檔準備就緒,然後加載組件。

所以在應用程序組件: 免責聲明:不要複製此代碼,它不會工作。我只是在這裏自由交涉。

@Component({ 
    selector: 'app-root', 
    template: '<bing-maps *ngIf="ready"></bing-maps' 

}) 
export class app implements onInit { 
ready: boolean; 

constructor() {} 
ngOnInit(){ 

document.onreadystatechange =() => { 
    if(document.readyState === "complete"){ 
     this.ready = true 
    } 
    } 

} 

} 

多數民衆贊成這個想法,你必須在div id爲=「MYMAP」,並在其的OnInit的炳地圖組件()你給的憑證。

0

在執行ngOnInit()時,#myMap不存在,因此請將代碼移至ngAfterViewChecked()

0

使用@ViewChild修飾器查詢的元素在運行ngAfterViewInit()生命週期檢查之前不可用。它們將在ngOnInit()中未定義。嘗試將該聲明移至

ngAfterViewInit() { 
    if(Microsoft !== undefined){ 
    var map = new Microsoft.Maps.Map(this.myMap.nativeElement, { 
    credentials: 'key goes here' 
    }); 
} 
} 

儘管我沒有在您的代碼中看到'Microsoft'對象正在定義的位置。你是否單獨導入,你只是沒有包括它?

+0

我沒有包含任何東西,你能告訴我我需要導入什麼?你是什麼意思由微軟對象。 – vineeth

+0

嗯,我不知道它是什麼,我只知道'Microsoft'不是打字稿或角度中的原生對象...所以需要在某處定義......在這一行中 - if(Microsoft!== undefined)它的引用到一個Microsoft對象,但它不清楚該對象被定義的位置,如果有的話,我會假設它是由bing腳本標記導入的,但是你必須看看源代碼。你從哪裏得到你當前使用的代碼在組件? – diopside

+0

我剛剛使用了腳本標記,就像你說的那樣,看着MSDN,他們使用新的Microsoft.Maps.Maap(....)來初始化地圖,我也做了同樣的事情。這與g oogle地圖,它工作得很好。現在我們公司要求查看他們與微軟簽訂合約的Bing地圖。呃...反正。我只是宣佈微軟在組件的頂部像.. 聲明var MIcrosoft; – vineeth

相關問題