2017-07-23 49 views
2

Dans ce code, j'essaie de déplacer lorsque je change d'emplacement mais il semble que quelque chose ne va pas. Le marqueur ne remplace pas.Comment déplacer le marqueur sur la carte dans ionic2?

declare var google; 
@Component({ 
    selector: 'page-page1', 
    templateUrl: 'page1.html', 
    providers: [Geolocation] 
}) 
export class Page1 { 
    @ViewChild('map') mapElement: ElementRef; 
    map: any; 
    public marker =[]; 
    public lat; 
    public lng; 
    public speed = '0'; 
    public watch: any; 

    constructor(public navCtrl: NavController, public Geolocation: Geolocation, public zone: NgZone, 
){  } 
ionViewDidLoad(){ 
    this.loadMap(); 
    this.startTracking();   
    } 
    loadMap(){ 
      this.Geolocation.getCurrentPosition().then((position) => { 
     let latLng = new google.maps.LatLng(position.coords.latitude, position.coords.longitude); 

     let mapOptions = { 
     center: latLng, 
     zoom: 17, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
     }  
     this.map = new google.maps.Map(this.mapElement.nativeElement, mapOptions); 
this.addMarker(); 
    }, (err) => { 
     console.log(err); 
    });  
    } 

    startTracking() { 
    let config = { 
    desiredAccuracy: 0, 
    stationaryRadius: 20, 
    distanceFilter: 10, 
    debug: true, 
    interval: 2000 
    };  
let options = { 
    frequency: 3000, 
    enableHighAccuracy: true 
};  
this.watch = this.Geolocation.watchPosition(options).filter((p: any) => p.code === undefined).subscribe((position: Geoposition) => { 
    this.zone.run(() => { 
    this.lat = position.coords.latitude; 
    this.lng = position.coords.longitude; 
    this.marker[0].lat= position.coords.latitude; 
    this.marker[0].lng= position.coords.longitude; 
    this.speed =(+position.coords.speed*3.6) + 'Km/h'; 
    }); 

}); 

} 
addMarker(){ 

let marker = new google.maps.Marker({ 
    map: this.map, 
    animation: google.maps.Animation.DROP, 
    position: this.map.getCenter() 
    }); 

this.marker.push(marker); 
console.log(this.marker); 
} 
} 

} 

Répondre

2

Utilisez pour déplacer le marqueur. Essayez ceci

this.zone.run(() => { 
    this.lat = position.coords.latitude; 
    this.lng = position.coords.longitude; 

    this.marker.setPosition({ lat: this.lat, lng: this.lng }); 

    this.speed =(+position.coords.speed*3.6) + 'Km/h'; 
    }); 
+0

Merci pour votre aide. un problème que j'ai, quand le marqueur est en train de remplacer sur de longues distances, il sort de la zone de la carte actuelle. comment puis-je garder le marqueur au centre des éboulis ou lorsque le fabricant atteint la bordure de l'écran, fait glisser automatiquement la carte vers la zone visible. – RSA

+0

@Reza, pouvez-vous s'il vous plaît ajouter une nouvelle question ou modifier cette question pour cela? –

+0

Oui, je vais poster une nouvelle question. – RSA