【发布时间】:2016-10-18 09:20:01
【问题描述】:
我想创建一个像这样工作的谷歌地图组件: https://jsfiddle.net/gvvy5vxz/2/
基于此:https://developers.google.com/maps/documentation/javascript/examples/overlay-simple
我是 typescript 的新手,我被原型实现困住了,特别是这个 JS sn-p:
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);
}
我不知道如何以打字稿的方式翻译它以及如何正确声明事物。
我想我应该创建一个扩展 google.maps.OverlayView 的类 USGSOverlay,但它不起作用。
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));
}
}
【问题讨论】:
标签: google-maps angular typescript