Angular2 - Как настроить google.maps.OverlayView? (переведите прототип JS в Typescript)
Я хотел бы создать компонент карты Google, который работает следующим образом:https://jsfiddle.net/gvvy5vxz/2/
Это основано на этом:https://developers.google.com/maps/documentation/javascript/examples/overlay-simple
Я новичок в машинописи, и я застрял с реализацией прототипа, особенно с этим фрагментом JS:
USGSOverlay.prototype = new google.maps.OverlayView();
USGSOverlay(bounds, image, map) {
// Initialize all properties.
this.bounds_ = bounds;
this.image_ = image;
this.map_ = map;
// Define a property to hold the image's div. We'll
// actually create this div upon receipt of the onAdd()
// method so we'll leave it null for now.
this.div_ = null;
// Explicitly call setMap on this overlay.
this.setMap(map);
}
Я понятия не имею, как перевести это машинописным способом и как правильно объявить вещи.
Я думаю, мне следует создать класс USGSOverlay, который расширяет google.maps.OverlayView, но он не работает.
class USGSOverlay extends google.maps.OverlayView{
bounds_;
image_;
map_;
div_;
constructor(bounds, image, map){
// Initialize all properties.
this.bounds_ = bounds;
this.image_ = image;
this.map_ = map;
// Define a property to hold the image's div. We'll
// actually create this div upon receipt of the onAdd()
// method so we'll leave it null for now.
this.div_ = null;
// Explicitly call setMap on this overlay.
this.setMap(map);
}
}
Это моя рабочая базовая составляющая. Создает простую карту внутри #map:
import { Component } from '@angular/core';
declare const google: any;
/*
/* Component Map
*/
@Component({
selector: 'map',
template: `
<div id="map"></div>
`,
styles: [
`#map{ width:100%; height:100%; position: absolute; width:100%; height:100%; top:0; left:0;}`
],
})
export class MapComponent {
ngOnInit(){
google.maps.event.addDomListener(window, 'load', this.initMap);
}
initMap() {
const map = new google.maps.Map(document.getElementById('map'), {
zoom: 11,
center: {lat: 62.323907, lng: -150.109291},
mapTypeId: google.maps.MapTypeId.SATELLITE
});
const bounds = new google.maps.LatLngBounds(
new google.maps.LatLng(62.281819, -150.287132),
new google.maps.LatLng(62.400471, -150.005608));
}
}