2017-09-25 128 views
2

我嘗試使用下面暴露接口 https://angular-maps.com/api-docs/agm-core/interfaces/LatLng.html#source帶構造函數的Typescript接口 - 如何實現?

export interface LatLng { 
    constructor(lat: number, lng: number): void; 
    lat(): number; 
    lng(): number; 
} 

我需要構建相同的對象使用一個API角度映射庫。 我該如何實現這個接口?

+0

您是否嘗試過使用出口yourClassName器具經緯度{} –

+0

你不需要實現它,實現隨地圖庫一起提供。 –

+0

我需要使用從GoogleMapsAPIWrapper公開的api(fitBounds),我需要傳遞LatLngBounds。要做到這一點,我需要設置我想要在地圖上顯示的所有點在一個邊界對象,這可以使用LatLngBounds.extends api,只接受一個LatLng對象。沒有提供可用於在庫中創建此對象的實現。 – Aarti

回答

0

我沒有使用這個庫,但如果你確定你需要實例化這樣一個對象,然後自己嘗試類似:

function createLatLng(lat: number, lng: number): LatLng { 
    return { 
     lat: function() { 
      return lat; 
     }, 
     lng: function() { 
      return lng; 
     } 
    } as LatLng; 
} 

let a = createLatLng(0, 0); 
let b = createLatLng(10, -10); 

接口真的不能沒有鑄造實現一個對象LatLng,因爲constructor部分,它應該是該類型的靜態聲明的一部分。

+0

謝謝!我會嘗試這個並更新。 – Aarti

+0

試過這個,但仍然不工作:(。我得到錯誤「不是一個LatLng或LatLngLiteral:屬性經緯:不是一個數字」 – Aarti

+0

確保'lat()'函數確實返回您傳遞給它的數字,如果這是在這種情況下,它可能確實希望獲得'LatLng'的實例,並且您需要使用google maps lib創建它 –

0

爲什麼不創建一個組件(或者只是一個類):使用它像

@Component({ 
    selector: 'SomeSpecific', 
    styleUrls: ['./SomeSpecificComponent.component.css'], 
    template: '<textarea>{{data?.text}}:{{data.value}}</textarea>' 
}) 
export class SomeSpecificComponent implements LatLng { 
    lat:number; 
    lon:number 
    constructor(lat: number, lng: number){ 
    } 
    lat(){ 
     return lat; 
    } 
    lng() 
     return lon; 
    } 
} 

則:

new SomeSpecificComponent (0,0); 
相關問題