2017-09-25 1 views
2

Ich versuche Winkel Karten Bibliothek zu verwenden, die unter Schnittstelle https://angular-maps.com/api-docs/agm-core/interfaces/LatLng.html#sourceTypescript-Schnittstelle mit Konstruktor - wie zu implementieren?

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

ich ein Objekt der gleichen konstruieren müssen stellen eine API zu verwenden. Wie kann ich diese Schnittstelle implementieren?

+0

Haben Sie versucht, den Export yourClassName Implementiert LatLng mit {} –

+0

Sie dies nicht tun Um es zu implementieren, kommt die Implementierung mit der Kartenbibliothek. –

+0

Ich brauche eine API (fitBounds) von GoogleMapsAPIWrapper ausgesetzt, wo ich LatLngBounds übergeben muss. Um das zu tun, muss ich alle Punkte, die ich in der Karte anzeigen möchte, in einem Begrenzungsobjekt setzen, was mit LatLngBounds.extents api geschehen kann, das nur ein LatLng-Objekt akzeptiert. Es gibt keine Implementierung, die ich verwenden kann, um dieses Objekt in der Bibliothek zu erstellen. – Aarti

Antwort

0

ich nicht diese Bibliothek benutzt haben, aber wenn Sie sicher sind, dass Sie ein solches Objekt zu instanziiert brauchen, um sich dann wie etwas versuchen:

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); 

Die Schnittstelle kann nicht wirklich ohne Gießen umgesetzt werden ein Objekt an LatLng, wegen des Teils constructor, der Teil der statischen Deklarationen für den Typ sein sollte.

+0

Danke! Ich werde das versuchen und updaten. – Aarti

+0

Versucht dies, aber immer noch nicht funktioniert :(. Ich bekomme Fehler "nicht ein LatLng oder LatLngLiteral: in Eigenschaft lat: keine Zahl" – Aarti

+0

Stellen Sie sicher, dass die 'lat()' -Funktion tatsächlich die Zahl zurückgibt, die Sie an sie übergeben, wenn das ist der Fall, dann erwartet es wahrscheinlich eine Instanz von 'LatLng' und Sie müssen es mit der Google Maps-Bibliothek erstellen –

0

warum nicht eine Komponente erstellen (oder auch nur eine Klasse):

@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; 
    } 
} 

dann so mit ihm:

new SomeSpecificComponent (0,0); 
Verwandte Themen