我在Ionic3项目中使用@ agm / core作为地图。 我想从地址获得lat,我尝试了这个代码。
let _address= this.cancellation.street+','+this.cancellation.city +', '+this.cancellation.state;
// let _address= 'Okara, Pakistan';
console.log(_address);
var me = this;
let geo = new google.maps.Geocoder();
geo.geocode( { 'address': _address}, function(results, status) {
console.log("LatLngFromAddress:",results[0].geometry.location.lat() +'/'+results[0].geometry.location.lng());
me.markerLocation.lat = results[0].geometry.location.lat();
me.markerLocation.lng =results[0].geometry.location.lng();
me.location.lat = results[0].geometry.location.lat();
me.location.lng =results[0].geometry.location.lng();
me.loadAPIWrapper(me.map);
});
但是我收到了Google未定义的错误, 即使我在Top上也声明了一个变量
declare var google: any;
我从下面读到,但无法修复它。 IONIC 3: Uncaught (in promise): ReferenceError: google is not defined ReferenceError
我也尝试过输入
typings install dt~google.maps --global
但这对我来说也不起作用。 你可以帮帮我吗。
答案 0 :(得分:0)
我遇到了同样的错误,在我的情况下,原因是因为异步,标记试图在加载地图之前出现,我通过实现“ ngAfterViewInit”钩子并使用对EventEmmiter的订阅来修复了它,如下所示:
import { AgmMap } from '@agm/core';
export class MyAGMContainerComponent{
@ViewChild('myMap') myMap : AgmMap;
ngAfterViewInit() {
this.myMap.mapReady.subscribe(
event => {
this.loadMarkers();
});
}
loadMarkers(){ // code for markers //}
和这样的html
<agm-map #myMap>
<agm-marker>
...
</agm-marker>
</agm-map>