【发布时间】:2017-05-31 16:55:10
【问题描述】:
我使用 api 来填充带有多个标记的地图,我想要的功能是让用户单击与标记关联的按钮,它会从他们当前的位置绘制方向。在第一个实例中,它可以完美运行,但是在尝试更改坐标时绘制的当前方向仍然存在
我使用 angular2-google-maps 来绘制标记,但我必须找到一个自定义指令来指示方向。我认为问题是我需要销毁方向的实例,但使用 ngIf 没有帮助。我还尝试使用 directionDisplay.set('directions', null); 在我的指令中重置方向的实例。但这也没用
/* directions.directive.ts */
import {GoogleMapsAPIWrapper} from '@agm/core/services/google-maps-api-wrapper';
import { Directive, Input} from '@angular/core';
declare var google: any;
@Directive({
selector: '<agm-map-directions [origin]="origin" [destination]="destination" #test></agm-map-directions>'
})
export class DirectionsMapDirective {
@Input() origin;
@Input() destination;
constructor (private gmapsApi: GoogleMapsAPIWrapper) {}
ngOnInit(){
this.gmapsApi.getNativeMap().then(map => {
var directionsService = new google.maps.DirectionsService;
var directionsDisplay = new google.maps.DirectionsRenderer;
console.log("test");
directionsDisplay.setMap(map);
directionsService.route({
origin: {lat: this.origin.latitude, lng: this.origin.longitude},
destination: {lat: this.destination.latitude, lng: this.destination.longitude},
waypoints: [],
optimizeWaypoints: true,
travelMode: 'DRIVING'
}, function(response, status) {
if (status === 'OK') {
directionsDisplay.setDirections(response);
} else {
window.alert('Directions request failed due to ' + status);
}
});
});
}
}
这是与之关联的html
<agm-map [zoom]="13" [latitude]="currentLocation.result.latitude" [longitude]="currentLocation.result.longitude">
<agm-marker [latitude]="currentLocation.result.latitude" [longitude]="currentLocation.result.latitude"></agm-marker>
<agm-marker *ngFor="let device of location.ChargeDevice; let i = index"
ngShow="device.SubscriptionRequiredFlag"
[latitude]="convertStringToNumber(device.ChargeDeviceLocation.Latitude)"
[longitude]="convertStringToNumber(device.ChargeDeviceLocation.Longitude)"
(markerClick)="clickedMarker(device)">
</agm-marker>
<div *ngIf="showDirections" >
<agm-map-directions [origin]="origin" [destination]="destination" #test></agm-map-directions>
</div>
</agm-map>
【问题讨论】:
标签: javascript angular google-maps