2017-09-25 47 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);