我们说我有这个主要组成部分:
import { Component } from "@angular/core";
@Component({
selector: "my-app",
templateUrl: "./layouts/main-layout.html"
})
export class AppComponent {
constructor(
){}
ngAfterViewInit() {
//console.log( com.google.android.gms.maps.CameraUpdateFactory );
}
}
如何在app.component.ts中调用注释掉的函数?
因为它给了我"com" not found
错误。
我在dependencies { compile 'com.google.android.gms:play-services-maps:9.8.0' }
文件中添加了App_Resources/Android/app.gradle
。
我还检查了nativescript-google-maps-sdk
插件是如何做到的。它似乎以同样的方式 - 它有它的'自己的nativescript-google-maps-sdk/platforms/android/include.gradle
文件,它还定义了本地android sdk中的google play服务地图,并在nativescript-google-maps-sdk/map-view.android.js
我看到它正在使用这样的命令而没有问题:
var cameraUpdate = com.google.android.gms.maps.CameraUpdateFactory.newCameraPosition( cameraPosition );
非常感谢任何见解。
答案 0 :(得分:4)
您首先需要了解错误发生的原因 - 缺少任何com
的TypeScript定义以及之后发生的事情。 com
不是TypeScript中的有效识别对象,也不是JavaScript,因此您需要
A)(BAD)指示TypeScript编译器不要抱怨缺少定义,因为你知道的更好,你知道com.google.android.gms.maps.CameraUpdateFactory
是一个有效的对象。您在noEmitOnErrors
tsconfig.json
B)(GOOD)提供打字(通常以.d.ts的形式出现)以及#34;熟悉" TSC与外星人阶级。
declare module com {
export module google {
export module android {
export module gms {
export module maps {
export class CameraUpdateFactory {
public static newCameraPosition(param0: any): any
}
}
}
}
}
}
let cameraUpdate: any = com.google.android.gms.maps.CameraUpdateFactory.newCameraPosition;
如果您无法描述整个命名空间,请使用let com: any
。可以为android / java库自动生成类型,但TypeScript / JavaScript中存在一定的限制,目前阻止我们将android android库类型与android.sdk和支持库类型一起导出。
答案 1 :(得分:3)
将此添加到您的文件中
declare var com:any;
并且还读了这个
How can I access Native api in NativeScript when I use Typescript