Google maps 单击“角度2”时将标记添加到google地图

Google maps 单击“角度2”时将标记添加到google地图,google-maps,angular,typescript,google-maps-markers,marker,Google Maps,Angular,Typescript,Google Maps Markers,Marker,我正在尝试构建一个angular 2应用程序,当我点击地图时,它会添加一个标记。 这是我的代码: <sebm-google-map (mapClick)="getPosition($event)" [latitude]="lat" [longitude]="lng" [zoom]="zoom" [backgroundColor]="backgroundColor" style="margin-bottom:900px"> <sebm-google-map-marker *n

我正在尝试构建一个angular 2应用程序,当我点击地图时,它会添加一个标记。 这是我的代码:

<sebm-google-map (mapClick)="getPosition($event)" [latitude]="lat" [longitude]="lng" [zoom]="zoom" [backgroundColor]="backgroundColor" style="margin-bottom:900px">
  <sebm-google-map-marker *ngFor=" let post of posts" [latitude]="post.lapti" [longitude]="post.longi" ></sebm-google-map-marker>
</sebm-google-map>


任何解决方案?

幸运的是,提供的plunker示例已经实现了确切的功能:

普朗克:

这是一个静态副本,以防plunker不再存在:

@Component({
  selector: 'my-app',
  styles: [`
    .sebm-google-map-container {
       height: 300px;
     }
  `],
  template: `
    <sebm-google-map 
      [latitude]="lat"
      [longitude]="lng"
      [zoom]="zoom"
      [disableDefaultUI]="false"
      [zoomControl]="false"
      (mapClick)="mapClicked($event)">

      <sebm-google-map-marker 
          *ngFor="let m of markers; let i = index"
          (markerClick)="clickedMarker(m.label, i)"
          [latitude]="m.lat"
          [longitude]="m.lng"
          [label]="m.label"
          [markerDraggable]="m.draggable"
          (dragEnd)="markerDragEnd(m, $event)">

        <sebm-google-map-info-window>
          <strong>InfoWindow content</strong>
        </sebm-google-map-info-window>

      </sebm-google-map-marker>

      <sebm-google-map-circle [latitude]="lat + 0.3" [longitude]="lng" 
          [radius]="5000"
          [fillColor]="'red'"
          [circleDraggable]="true"
          [editable]="true">
      </sebm-google-map-circle>

    </sebm-google-map>
`})
export class App {
  // google maps zoom level
  zoom: number = 8;

  // initial center position for the map
  lat: number = 51.673858;
  lng: number = 7.815982;

  clickedMarker(label: string, index: number) {
    console.log(`clicked the marker: ${label || index}`)
  }

  mapClicked($event: MouseEvent) {
    this.markers.push({
      lat: $event.coords.lat,
      lng: $event.coords.lng
    });
  }

  markerDragEnd(m: marker, $event: MouseEvent) {
    console.log('dragEnd', m, $event);
  }

  markers: marker[] = [
      {
          lat: 51.673858,
          lng: 7.815982,
          label: 'A',
          draggable: true
      },
      {
          lat: 51.373858,
          lng: 7.215982,
          label: 'B',
          draggable: false
      },
      {
          lat: 51.723858,
          lng: 7.895982,
          label: 'C',
          draggable: true
      }
  ]
}
// just an interface for type safety.
interface marker {
    lat: number;
    lng: number;
    label?: string;
    draggable: boolean;
}
@组件({
选择器:“我的应用程序”,
风格:[`
.sebm谷歌地图容器{
高度:300px;
}
`],
模板:`
信息窗口内容
`})
导出类应用程序{
//谷歌地图缩放级别
缩放:数字=8;
//地图的初始中心位置
lat:数字=51.673858;
液化天然气:数量=7.815982;
clickedMarker(标签:字符串,索引:编号){
log(`clicked the marker:${label | | index}`)
}
mapClicked($event:MouseEvent){
这个,推({
lat:$event.coords.lat,
液化天然气:$event.coords.lng
});
}
markerDragEnd(m:marker$event:MouseEvent){
console.log('dragEnd',m$事件);
}
标记:标记[]=[
{
拉脱维亚:51.673858,
液化天然气:7.815982,
标签:“A”,
德拉格布尔:是的
},
{
拉脱维亚:51.373858,
液化天然气:7.215982,
标签:‘B’,
可拖动:错误
},
{
拉脱维亚:51.723858,
液化天然气:7.895982,
标签:‘C’,
德拉格布尔:是的
}
]
}
//只是一个类型安全的接口。
接口标记{
lat:数字;
液化天然气:数量;
标签?:字符串;
可拖动:布尔型;
}

幸运的是,提供的plunker示例已经实现了确切的功能:

普朗克:

这是一个静态副本,以防plunker不再存在:

@Component({
  selector: 'my-app',
  styles: [`
    .sebm-google-map-container {
       height: 300px;
     }
  `],
  template: `
    <sebm-google-map 
      [latitude]="lat"
      [longitude]="lng"
      [zoom]="zoom"
      [disableDefaultUI]="false"
      [zoomControl]="false"
      (mapClick)="mapClicked($event)">

      <sebm-google-map-marker 
          *ngFor="let m of markers; let i = index"
          (markerClick)="clickedMarker(m.label, i)"
          [latitude]="m.lat"
          [longitude]="m.lng"
          [label]="m.label"
          [markerDraggable]="m.draggable"
          (dragEnd)="markerDragEnd(m, $event)">

        <sebm-google-map-info-window>
          <strong>InfoWindow content</strong>
        </sebm-google-map-info-window>

      </sebm-google-map-marker>

      <sebm-google-map-circle [latitude]="lat + 0.3" [longitude]="lng" 
          [radius]="5000"
          [fillColor]="'red'"
          [circleDraggable]="true"
          [editable]="true">
      </sebm-google-map-circle>

    </sebm-google-map>
`})
export class App {
  // google maps zoom level
  zoom: number = 8;

  // initial center position for the map
  lat: number = 51.673858;
  lng: number = 7.815982;

  clickedMarker(label: string, index: number) {
    console.log(`clicked the marker: ${label || index}`)
  }

  mapClicked($event: MouseEvent) {
    this.markers.push({
      lat: $event.coords.lat,
      lng: $event.coords.lng
    });
  }

  markerDragEnd(m: marker, $event: MouseEvent) {
    console.log('dragEnd', m, $event);
  }

  markers: marker[] = [
      {
          lat: 51.673858,
          lng: 7.815982,
          label: 'A',
          draggable: true
      },
      {
          lat: 51.373858,
          lng: 7.215982,
          label: 'B',
          draggable: false
      },
      {
          lat: 51.723858,
          lng: 7.895982,
          label: 'C',
          draggable: true
      }
  ]
}
// just an interface for type safety.
interface marker {
    lat: number;
    lng: number;
    label?: string;
    draggable: boolean;
}
@组件({
选择器:“我的应用程序”,
风格:[`
.sebm谷歌地图容器{
高度:300px;
}
`],
模板:`
信息窗口内容
`})
导出类应用程序{
//谷歌地图缩放级别
缩放:数字=8;
//地图的初始中心位置
lat:数字=51.673858;
液化天然气:数量=7.815982;
clickedMarker(标签:字符串,索引:编号){
log(`clicked the marker:${label | | index}`)
}
mapClicked($event:MouseEvent){
这个,推({
lat:$event.coords.lat,
液化天然气:$event.coords.lng
});
}
markerDragEnd(m:marker$event:MouseEvent){
console.log('dragEnd',m$事件);
}
标记:标记[]=[
{
拉脱维亚:51.673858,
液化天然气:7.815982,
标签:“A”,
德拉格布尔:是的
},
{
拉脱维亚:51.373858,
液化天然气:7.215982,
标签:‘B’,
可拖动:错误
},
{
拉脱维亚:51.723858,
液化天然气:7.895982,
标签:‘C’,
德拉格布尔:是的
}
]
}
//只是一个类型安全的接口。
接口标记{
lat:数字;
液化天然气:数量;
标签?:字符串;
可拖动:布尔型;
}