Autocomplete 使用angular 4单击“自动完成位置”中的搜索位置时,如何在google地图中获取位置

Autocomplete 使用angular 4单击“自动完成位置”中的搜索位置时,如何在google地图中获取位置,autocomplete,maps,Autocomplete,Maps,我已经从中实现了自动完成位置功能 下面是我的代码。当我搜索任何位置时,它会被列出,但当我选择该位置时,如何在地图视图中标记该位置。我添加了列出位置的代码和图像。当我选择某个特定位置时,地图中的标记不会移动到该特定位置。我该怎么办?任何建议都会很有帮助 <div class="form-group"> <input placeholder="search for location" autocorrect="off" autocapitalize="off" spellc

我已经从中实现了自动完成位置功能 下面是我的代码。当我搜索任何位置时,它会被列出,但当我选择该位置时,如何在地图视图中标记该位置。我添加了列出位置的代码和图像。当我选择某个特定位置时,地图中的标记不会移动到该特定位置。我该怎么办?任何建议都会很有帮助

<div class="form-group">
    <input placeholder="search for location" autocorrect="off" autocapitalize="off" spellcheck="off" type="text" class="form-control" #search [formControl]="searchControl">
  </div>
<agm-map style="height: 600px" [latitude]="1.372611" [longitude]="103.848076">
    <agm-marker  *ngFor="let m of mapArrayList; let i = index" 
      [latitude]="m.latitude"
      [longitude]="m.longitude"
     >
   </agm-marker>
</agm-map>

[![import { Component, Input, Output, EventEmitter, OnInit, ElementRef, NgZone, ViewChild } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { NgModule, ApplicationRef } from '@angular/core';
import { FormsModule, FormControl  } from '@angular/forms';
/// <reference path="<relevant path>/node_modules/@types/googlemaps/index.d.ts" />
import { AgmCoreModule, MapsAPILoader } from '@agm/core';
import { AgmJsMarkerClustererModule } from '@agm/js-marker-clusterer';
import {} from 'googlemaps';
declare var google: any;

@Component({
  selector: 'app-google-map',
  templateUrl: './google-map.component.html',
  styleUrls: \['./google-map.component.sass'\]
})
@NgModule({
imports: \[AgmCoreModule.forRoot({
               apiKey: 'AIzaSyC0bwgoL0KaR4YBM2aN0OmhMF6t7toO7BA'
        }),
        AgmJsMarkerClustererModule\],
})
export class GoogleMapComponent implements OnInit {
  @Input() facilityListArray: any;
  lat: number;
  lng: number;
  public searchControl: FormControl;
  public zoom: number;

  mapArrayList: any = \[\];
  @ViewChild('search')
  public searchElementRef: ElementRef;
  constructor(private router: Router,
    private route: ActivatedRoute,  private mapsAPILoader: MapsAPILoader,
    private ngZone: NgZone) { }

  ngOnInit() {
    this.lat = 1.372611;
    this.lng = 103.848076;
    this.mapArrayList = this.facilityListArray;
    console.log(this.mapArrayList);
     // set google maps defaults
     this.zoom = 4;
     this.lat = 39.8282;
     this.lng = -98.5795;

     // create search FormControl
     this.searchControl = new FormControl();

     // set current position
     this.setCurrentPosition();

     // load Places Autocomplete
    this.mapsAPILoader.load().then(() => {
      const autocomplete = new google.maps.places.Autocomplete(this.searchElementRef.nativeElement, {
        types: \['address'\]
      });
      autocomplete.addListener('place_changed', () => {
        this.ngZone.run(() => {
          // get the place result
          const place: google.maps.places.PlaceResult = autocomplete.getPlace();

          // verify result
          if (place.geometry === undefined || place.geometry === null) {
            return;
          }

          // set latitude, longitude and zoom
          this.lat = place.geometry.location.lat();
          this.lng = place.geometry.location.lng();
          this.zoom = 12;
        });
      });
    });
  }
  autoCompleteCallback1(selectedData: any) {
    // do any necessery stuff.
}

  private setCurrentPosition() {
    if ('geolocation' in navigator) {
      navigator.geolocation.getCurrentPosition((position) => {
        this.lat = position.coords.latitude;
        this.lng = position.coords.longitude;
        this.zoom = 12;
      });
    }
  }
}][1]][1]

[![import{Component,Input,Output,EventEmitter,OnInit,ElementRef,NgZone,ViewChild}来自'@angular/core';
从“@angular/platform browser”导入{BrowserModule};
从'@angular/core'导入{NgModule,ApplicationRef};
从'@angular/forms'导入{FormsModule,FormControl};
/// 
从“@agm/core”导入{AgmCoreModule,MapsAPILoader};
从“@agm/js marker clusterer”导入{AGMJSMarkerClusterModule};
从“谷歌地图”导入{};
声明:任何;
@组成部分({
选择器:“应用谷歌地图”,
templateUrl:'./google map.component.html',
样式URL:\['./googlemap.component.sass'\]
})
@NGD模块({
导入:\[AgmCoreModule.forRoot({
apiKey:“Aizasyc0bwgol0kar4ybm2an0omhmf6t7to7ba”
}),
AGMJSMarkerClusterModule\],
})
导出类GoogleMapComponent实现OnInit{
@Input()FacilityListaray:任意;
lat:数字;
液化天然气:数量;
公共搜索控制:FormControl;
公共缩放:数字;
mapArrayList:any=\[\];
@ViewChild('搜索')
公共搜索ElementRef:ElementRef;
构造函数(专用路由器:路由器、,
专用路由:ActivatedRoute,专用mapsAPILoader:mapsAPILoader,
专用ngZone:ngZone){}
恩戈尼尼特(){
这是1.lat=1.372611;
这是1.lng=103.848076;
this.mapArrayList=this.facilityListArray;
console.log(this.mapArrayList);
//设置谷歌地图默认值
这个.zoom=4;
该系数为39.8282;
该值为-98.5795;
//创建搜索表单控件
this.searchControl=新表单控件();
//设置当前位置
这是setCurrentPosition();
//加载位置自动完成
这个.mapsAPILoader.load()。然后(()=>{
const autocomplete=new google.maps.places.autocomplete(this.searchElementRef.nativeElement{
类型:\['address'\]
});
autocomplete.addListener('place\u changed',()=>{
此.ngZone.run(()=>{
//获得排名结果
const-place:google.maps.places.PlaceResult=autocomplete.getPlace();
//验证结果
if(place.geometry==undefined | | place.geometry==null){
返回;
}
//设置纬度、经度和缩放
this.lat=place.geometry.location.lat();
this.lng=place.geometry.location.lng();
这个.zoom=12;
});
});
});
}
自动完成回调1(selectedData:any){
//做任何必要的事情。
}
私有setCurrentPosition(){
if(导航器中的“地理位置”){
navigator.geolocation.getCurrentPosition((位置)=>{
this.lat=position.coords.lation;
this.lng=position.coords.longitude;
这个.zoom=12;
});
}
}
}][1]][1]

伙计们,有什么解决方案吗?