您好我是Typescript和Javascript的新手,我在创建googlemap实例时遇到了一些问题。
我已经下载了google.maps.d.ts声明文件并将其导入我的打字稿类,所有intellisense工作正常等等;
import googleMaps = module("google.maps");
module Mapping {
export class GoogleMap implements IMap {
public name: string;
private map: any;
private options: any;
constructor (mapDiv:Element) {
this.name = "GoogleMap";
this.options = { zoom: 3, MapTypeId: 'terrian' };
this.map = new googleMaps.google.maps.Map(mapDiv, this.options);
}
}
}
当我尝试在index.cshtml文件中创建此类时;
<!DOCTYPE html>
<html>
<head><title>TypeScript Mapping</title></head>
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js? key=MYKEYGOESHERE&sensor=false"></script>
<script type="text/javascript" src="~/scripts/require.js"></script>
<script type="text/javascript" src="~/typings/Mapping.js"></script>
<script type="text/javascript">
function initialize() {
var mapCanvas = document.getElementById("map");
var googleMap = new Mapping.GoogleMap(mapCanvas);
}
</script>
<body onload="initialize()">
<div id="map" style="height: 512px; width: 512px;"></div>
我收到以下错误;
Microsoft JScript运行时错误:模块名称&#34; google.maps&#34;尚未加载上下文:_。使用require([])
为了加载googlemaps api我缺少什么?
提前致谢。
答案 0 :(得分:13)
由于您在网页上将Google地图作为script
标记加入,因此您可能不想使用模块加载程序将其加载。
所以我会替换:
import googleMaps = module("google.maps");
使用
/// <reference path="./google.maps.d.ts" />
引用对TypeScript&#34说;我将确保此脚本在运行时可用&#34;。
import语句说&#34; Go并在运行时为我加载此脚本&#34;。
答案 1 :(得分:0)
我喜欢创建一个叫shim
函数的东西,让我可以使用窗口变量/对象(比如google
)。我创建了.ts
文件:
// -- Shim.ts:
/**
* Loads variable from window according to
* the name parameter.
*
* @export
* @param {string} name
* @returns {*} window[name]
*/
export function shim(name: string): any {
let global: any = window;
return global[name];
}
我的基本设置看起来不像:
- main.ts
-- shims
-- -- Shim.ts
-- -- Google.ts
-- -- Swiper.ts
-- -- ... .ts
而Google.ts不仅仅是使用以下功能:
// -- Google.ts
import { shim } from '../shims/Shim';
/**
* Loads variable from window with the
* name 'google'
*
* @export
* @returns {*} window['google']
*/
export let google = shim('google');
如果您想要使用谷歌变量,只需将其包括在内:
import { google } from '../shims/Google';
也许还可以查看typings - Typings是管理和安装TypeScript定义的简单方法 - 这对我帮助很大。
我目前正在编写另一个Typescript Google Maps Setup,并考虑与社区分享。
您可以使用以下链接查看:https://github.com/DominikAngerer/typescript-google-maps