Man*_*gan 5 google-maps google-maps-api-3 google-maps-markers typescript angular
我在我的角度2车辆跟踪应用程序中使用agm map.这里我使用agm-map来显示地图.我有一个名为Playback Component的组件,表示用户可以查看从特定日期和时间到另一个的车辆特别的日期和时间.现在一切正常.我需要提供一个选项以及称为最大速度的日期和时间,这意味着用户可以在地图中查看车辆在用户输入的行程之上最大速度(例如,用户将最大速度设为50,单独的旅行点应以红色突出显示).
我试过以下,
<agm-map [latitude]="lat" [longitude]="lng" [zoom]="zoom" [mapTypeControl]="true">
<agm-marker [latitude]="latlngMarker.latitude" [longitude]="latlngMarker.longitude">
</agm-marker>
<agm-polyline [strokeColor]="'#2196f3'">
<ng-container *ngFor="let i of latlng">
<agm-polyline-point *ngIf = "i.speed < maxSpeed " [latitude]="i.latitude" [longitude]="i.longitude">
</agm-polyline-point>
</ng-container>
</agm-polyline>
<agm-polyline [strokeColor]="'red'">
<ng-container *ngFor="let i of latlng">
<agm-polyline-point *ngIf = "i.speed > maxSpeed " [latitude]="i.latitude" [longitude]="i.longitude">
</agm-polyline-point>
</ng-container>
</agm-polyline>
</agm-map>
Run Code Online (Sandbox Code Playgroud)
结果就像在图像中一样.
但我想要的就像这张图片,
此图像显示红色的旅行点以及蓝色点,车辆行驶的速度超过最大速度,我也需要输出,就像在第二个图像中一样.通过agm map poly point帮助我实现所需的结果.
要实现这一点,我建议你2逻辑:
第一个逻辑是为数据中的每2个点创建折线,并根据数据速度属性设置其颜色:
Poyline(array(0), array(1)) , Polyline(array(1), array(2)), ...Poyline(array(i), array(i+1))
Run Code Online (Sandbox Code Playgroud)
并检查maxSpeed数组(i)以设置颜色:
代码(我改变了项目point,并i于index):
<agm-polyline *ngFor="let point of latLng;let i = index;" [strokeColor]="point.speed < 50 ? '#2196f3': 'red'">
<agm-polyline-point [latitude]="point.latitude" [longitude]="point.longitude">
</agm-polyline-point>
<ng-container *ngIf="polyline[i+1]">
<agm-polyline-point [latitude]="polyline[i+1].latitude" [longitude]="polyline[i+1].longitude">
</agm-polyline-point>
</ng-container>
</agm-polyline>
Run Code Online (Sandbox Code Playgroud)
plunker demonstring this:https://embed.plnkr.co/keExxn/
第二个想法是根据速度将折线的数组与多个折线的数组分开.所以最终的数组看起来像:
let polylines = [
{path: [item1, item2], color: 'red'},
{path: [item3, item4, item5, item6, item7], color: '#2196f3'},
...
]
Run Code Online (Sandbox Code Playgroud)
因此,从您的主数据中,只需创建一个函数来将数据更改为最终数据.
并在HTML中:
<agm-map [latitude]="latitude" [longitude]="longitude" [scrollwheel]="false" [zoom]="zoom">
<ng-container>
<agm-polyline *ngFor="let polyline of polylines;let i = index;" [strokeColor]="polyline.color">
<agm-polyline-point *ngFor="let point of polyline.path" [latitude]="point.latitude" [longitude]="point.longitude">
</agm-polyline-point>
</agm-polyline>
</ng-container>
</agm-map>
Run Code Online (Sandbox Code Playgroud)
你可以看看这个plnker开始:https://embed.plnkr.co/u82rKd/
| 归档时间: |
|
| 查看次数: |
7364 次 |
| 最近记录: |