Angular-google-maps: * ngFor |와 ν•¨κ»˜ sebm-google-map-markerλ₯Όλ‘œλ“œν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 비동기

에 λ§Œλ“  2016λ…„ 05μ›” 09일  Β·  20μ½”λ©˜νŠΈ  Β·  좜처: SebastianM/angular-google-maps

비동기 데이터λ₯Ό json νŒŒμΌμ—μ„œλ‘œλ“œν•˜λŠ” μ„œλΉ„μŠ€κ°€ μžˆμŠ΅λ‹ˆλ‹€. * ngForλŠ” reture 된 λͺ¨λ“  데이터에 λŒ€ν•΄ sebm-google-map-markerλ₯Ό μƒμ„±ν•˜μ§€λ§Œ sebm-google-map은 μƒˆλ‘œ μΆ”κ°€ 된 마컀λ₯Όλ‘œλ“œν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
marker.json
{ "data" : [ { "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 } ] }

service.ts

getmockStores() { return this._http.get(CONFIG.baseUrls.mockstoreSelector) .map((response: Response) => <marker[]>response.json().data) .catch(this._exceptionService.catchBadResponse) }

component.ts
`getMockMarkers () {

this.mockStores = this._storeService.getmockStores()
  .catch(e => {
    this._toastService.activate(`${e}`);
    return Observable.of();
  })

})
}`

.component.html
<sebm-google-map [latitude]="lat" [longitude]="lng" [zoom]="zoom" [disableDefaultUI]="false"> <sebm-google-map-marker *ngFor="#m of mockStores" [latitude]="m.lat" [longitude]="m.lng" [label]="m.label" [markerDraggable]="m.draggable" (dragEnd)="markerDragEnd(m, $event)"> </sebm-google-map-marker> </sebm-google-map>

discussion / question

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

λ‚˜λŠ” 방금 이것을 λ§Œλ‚¬κ³  λ‹€λ₯Έ λˆ„κ΅°κ°€κ°€ 그것에 λΆ€λ”ͺ 힐 경우λ₯Ό λŒ€λΉ„ν•˜μ—¬ λ‚΄ μž‘μ—…μ„ 곡유 ν•  것이라고 μƒκ°ν–ˆμŠ΅λ‹ˆλ‹€.

λ‚΄ ts νŒŒμΌμ—μ„œ λ¬Έμžμ—΄μ„ 숫자둜 λ³€ν™˜ν•˜λŠ” κ°„λ‹¨ν•œ 방법을 μΆ”κ°€ν–ˆμŠ΅λ‹ˆλ‹€.

private convertStringToNumber(value: string): number {
        return +value;
    }

그런 λ‹€μŒ htmlμ—μ„œ μœ„λ„ / 경도λ₯Όμ΄ λ©”μ„œλ“œμ— μ „λ‹¬ν•©λ‹ˆλ‹€.

<sebm-google-map-marker *ngFor="let location of clientLocations" [latitude]="convertStringToNumber(location.latitude)" [longitude]="convertStringToNumber(location.longitude)"></sebm-google-map-marker>

λͺ¨λ“  20 λŒ“κΈ€

μœ„μ˜ λ¬Έμ œμ— λŒ€ν•œ μ—…λ°μ΄νŠΈκ°€ μžˆμŠ΅λ‹ˆκΉŒ?

hey @ krunal039- 비동기 μž‘μ—…μ΄ μ™„λ£Œλœ ν›„ <sebm-google-map-marker> 이 DOM에 μžˆλŠ”μ§€ 확인할 수 μžˆμŠ΅λ‹ˆκΉŒ? 감사!

μ•ˆλ…•ν•˜μ„Έμš” Sebastian, 방금 angular2λ₯Ό μ΅œμ‹ μœΌλ‘œ μ—…λ°μ΄νŠΈν–ˆμœΌλ©° 잘λͺ»λœ μ½”λ“œμΈμ§€ λ˜λŠ” μ•΅κ·€λŸ¬μΈμ§€ ν™•μ‹€ν•˜μ§€ μ•Šμ€ 문제λ₯Ό ν•΄κ²°ν–ˆμŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ κ³ μ •λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. λͺ¨λ“  마컀λ₯Ό 기반으둜 쀌 μžλ™μ„ μ„€μ •ν•˜λŠ” μ˜΅μ…˜λ„ μžˆμŠ΅λ‹ˆκΉŒ?

@ krunal039 μ•„λ‹ˆμš”, μ§€κΈˆμ€ λΆˆκ°€λŠ₯ν•©λ‹ˆλ‹€-μ£„μ†‘ν•©λ‹ˆλ‹€. ν•„μš”ν•œ 경우 μƒˆ 문제λ₯Όμ—¬μ‹­μ‹œμ˜€. API μ„ΈλΆ€ 사항에 λŒ€ν•΄ λ…Όμ˜ ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 감사!

λΏ‘ 빡뀨
이 호λ₯Ό λ‹€μ‹œ μ—΄κ³  μ‹ΆμŠ΅λ‹ˆλ‹€. λ‚˜λŠ” angular2 rc.4 (μ§€κΈˆκΉŒμ§€ κ°€μž₯ 졜근의 angular2 릴리슀)λ₯Ό μ‚¬μš©ν•˜κ³  있으며이 λ¬Έμ œμ— 직면 ν•΄ μžˆμŠ΅λ‹ˆλ‹€. λ§ˆμ»€κ°€ DOMμ—λ‘œλ“œλ˜μ§€λ§Œμ§€λ„ μΊ”λ²„μŠ€μ— ν‘œμ‹œλ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

  <sebm-google-map 
      [latitude]="map_focus_lat"
      [longitude]="map_focus_lng"
      [zoom]="11">

    <sebm-google-map-marker *ngFor="let center of centers" 
    [latitude]="center.latitude" 
    [longitude]="center.longitude">
    </sebm-google-map-marker>
  </sebm-google-map>

centers λŠ” μœ„λ„ 및 경도 맀개 λ³€μˆ˜κ°€μžˆλŠ” 각 객체의 객체 λ°°μ—΄μž…λ‹ˆλ‹€. centers λŠ” μ„œλΉ„μŠ€λ₯Ό 톡해 비동기 μ μœΌλ‘œλ‘œλ“œλ©λ‹ˆλ‹€. ν…œν”Œλ¦Ώμ˜ 쀑앙에 *ngFor λ₯Ό μ‚¬μš©ν•˜λŠ” λ‹€λ₯Έ html μš”μ†Œκ°€ μ˜¬λ°”λ₯΄κ²Œ μž‘λ™ν•©λ‹ˆλ‹€. 각 쀑심 객체의 λ§ˆμ»€λŠ” μ •ν™•ν•œ μœ„λ„μ™€ 경도λ₯Ό μ‚¬μš©ν•˜μ—¬ DOMμ—μ„œ μƒμ„±λ˜μ§€λ§Œ μ–΄λ–€ μ΄μœ λ‘œμ§€λ„μ— ν‘œμ‹œλ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

angular.rc4λ₯Ό μ‚¬μš©ν•˜μ—¬ λ™μΌν•œ λ¬Έμ œμ— μ§λ©΄ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.
λ˜ν•œ λΈŒλΌμš°μ € 크기λ₯Ό μˆ˜λ™μœΌλ‘œ μ‘°μ •ν•˜λ©΄μ§€λ„κ°€ ν‘œμ‹œλ©λ‹ˆλ‹€.

@SebastionM rc4 μ—μ„œ 같은 λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€. λ§ˆμ»€κ°€μ§€λ„μ— ν‘œμ‹œλ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ§ˆμ»€λŠ” 돔에 ν‘œμ‹œλ˜μ§€λ§Œ

여기에 같은 문제. μ–΄λ–€ ν•΄κ²°μ±…?

μ—¬κΈ°μ—μ„œλ„ 같은 λ¬Έμ œμž…λ‹ˆλ‹€. 각도 rc3

λ§ˆμ§€λ§‰μœΌλ‘œ μ•Œμ•„ λ‚΄μ‹­μ‹œμ˜€.
λ‚΄ μ‹œλ‚˜λ¦¬μ˜€μ—μ„œλŠ” JSON으둜 μ œκ³΅λ˜λŠ” Http μ„œλΉ„μŠ€μ—μ„œ 데이터λ₯Ό μ–»μ—ˆμŠ΅λ‹ˆλ‹€. for λ£¨ν”„μ—μ„œ ν•΄λ‹Ή λ°μ΄ν„°μ˜ lat 및 lng ν•„λ“œλ₯Ό λ°”μΈλ”©ν–ˆμŠ΅λ‹ˆλ‹€. μž‘λ™ν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€. λ§ˆμ»€κ°€ DOMμ—μ„œ μƒμ„±λ˜μ—ˆμ§€λ§Œ μΊ”λ²„μŠ€μ— ν‘œμ‹œλ˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.

이것이 λ‚΄κ°€ 그것을 μ•Œμ•„ λ‚Έ λ°©λ²•μž…λ‹ˆλ‹€.

  1. markerλΌλŠ” μΈν„°νŽ˜μ΄μŠ€λ₯Ό λ§Œλ“€μ—ˆμŠ΅λ‹ˆλ‹€.
    μΈν„°νŽ˜μ΄μŠ€ 마컀 {
    μœ„λ„ : 숫자;
    lng : 숫자;
    λ ˆμ΄λΈ”? : λ¬Έμžμ—΄;
    λ“œλž˜κ·Έ κ°€λŠ₯ : λΆ€μšΈ;
    }
  2. λ‚΄ 데이터가 κ΄€μ°° κ°€λŠ₯ 해지면 subscribe λ©”μ„œλ“œμ—μ„œ 데이터가 μ™„μ „νžˆ 페치되면 λ‹€λ₯Έ λ©”μ„œλ“œ pushMarker ()λ₯Ό ν˜ΈμΆœν•©λ‹ˆλ‹€.

this.observable = this.gisDataService.getEntities (dcode);
this.observable.subscribe (
data => this.data = data.map ((entity : Entity) => new Entity (entity.uid, entity.alpha, entity.lat, entity.lng, entity.type, entity.tag, entity.addr, entity .desc, entity.zcode, entity.rcode, entity.dcode)),
였λ₯˜ => κ²½κ³  (였λ₯˜),
() => this.pushMarkers () // 끝에 ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜λŠ” κ³³μž…λ‹ˆλ‹€.
);

  1. 그런 λ‹€μŒ 데이터λ₯Ό λ°˜λ³΅ν•˜μ—¬ 마컀 배열에 λ„£μ—ˆμŠ΅λ‹ˆλ‹€.

this.data.forEach (element => {
this.markers.push ({
lat : Number (element.lat),
lng : Number (element.lng),
label : element.tag,
draggable : false
})
console.log ( "pushed"+ element.lat + ","+ element.lng);
});

μ°Έκ³  : JSON으둜 데이터λ₯Όλ°›μ„ λ•Œ JSON을 ν΄λž˜μŠ€μ— λ§€ν•‘ν•˜λ”λΌλ„ 숫자둜 λ³€ν™˜λ˜μ§€ μ•ŠλŠ”λ‹€λŠ” 것을 μ•Œμ•„ λƒˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ Pushing (pushMarker () ν•¨μˆ˜μ—μ„œ λͺ…μ‹œ 적으둜 lat / lngλ₯Ό Number ()둜 λ³€ν™˜ν•΄μ•Όν•©λ‹ˆλ‹€.)

도움이 λ˜μ—ˆκΈ°λ₯Ό λ°”λžλ‹ˆλ‹€.

νŠΈμœ— λ‹΄μ•„ κ°€κΈ° Number ()둜 λͺ…μ‹œ 적으둜 λ³€ν™˜ν•΄μ•Όν–ˆμŠ΅λ‹ˆλ‹€. κ°μ‚¬ν•©λ‹ˆλ‹€ :)

κ°μ‚¬ν•©λ‹ˆλ‹€ @nileshmahant κ°€ λ‚΄ 문제λ₯Ό ν•΄κ²°ν–ˆμŠ΅λ‹ˆλ‹€!

λ³€ν™˜ 된 값을 μ œκ³΅ν•˜λŠ” λŒ€μ‹  ꡬ성 μš”μ†Œμ—μ„œ λ³€ν™˜μ„ κ°€μ Έ 였기 μœ„ν•΄μ΄ ν•­λͺ©μ„ λ‹€μ‹œ μ—΄κ³  μ‹ΆμŠ΅λ‹ˆλ‹€.

λ‚˜λ₯Ό μœ„ν•΄ +1, 이것을 μ•Œμ•„λ‚΄λŠ” 데 μ‹œκ°„μ΄ κ±Έλ Έκ³  JSONμ—μ„œ 마컀λ₯Όλ‘œλ“œν•˜λŠ” μ‚¬μš© μ‚¬λ‘€λŠ” 맀우 λ…Όλ¦¬μ μž…λ‹ˆλ‹€.

λ‚˜λŠ” 방금 이것을 λ§Œλ‚¬κ³  λ‹€λ₯Έ λˆ„κ΅°κ°€κ°€ 그것에 λΆ€λ”ͺ 힐 경우λ₯Ό λŒ€λΉ„ν•˜μ—¬ λ‚΄ μž‘μ—…μ„ 곡유 ν•  것이라고 μƒκ°ν–ˆμŠ΅λ‹ˆλ‹€.

λ‚΄ ts νŒŒμΌμ—μ„œ λ¬Έμžμ—΄μ„ 숫자둜 λ³€ν™˜ν•˜λŠ” κ°„λ‹¨ν•œ 방법을 μΆ”κ°€ν–ˆμŠ΅λ‹ˆλ‹€.

private convertStringToNumber(value: string): number {
        return +value;
    }

그런 λ‹€μŒ htmlμ—μ„œ μœ„λ„ / 경도λ₯Όμ΄ λ©”μ„œλ“œμ— μ „λ‹¬ν•©λ‹ˆλ‹€.

<sebm-google-map-marker *ngFor="let location of clientLocations" [latitude]="convertStringToNumber(location.latitude)" [longitude]="convertStringToNumber(location.longitude)"></sebm-google-map-marker>

쒋은!

개인 κΈ°λŠ₯ λŒ€μ‹ μ— νŒŒμ΄ν”„λ₯Ό μƒμ„±ν•˜μ§€ μ•ŠλŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€.
이 μž‘μ—…μ„ μˆ˜ν–‰. 훨씬 더 멋지고 νœ΄λŒ€ κ°€λŠ₯ν•΄ 보일 κ²ƒμž…λ‹ˆλ‹€.

λ˜ν•œ 더 λ§Žμ€ 일이 μ—†μŠ΅λ‹ˆλ‹€.

μ›ν•˜λŠ” 경우 예제λ₯Ό 제곡 ν•  수 μžˆμŠ΅λ‹ˆλ‹€. :-)

2017 λ…„ 4 μ›” 1 일 02:12에 Austin LaRue [email protected] 은 λ‹€μŒκ³Ό 같이 μΌμŠ΅λ‹ˆλ‹€.

λ‚˜λŠ” 방금 이것을 λ§Œλ‚¬κ³  λ§ŒμΌμ„ λŒ€λΉ„ν•˜μ—¬ λ‚΄ μž‘μ—…μ„ 곡유 ν•  것이라고 μƒκ°ν–ˆμŠ΅λ‹ˆλ‹€.
λ‹€λ₯Έ μ‚¬λžŒμ΄ 그것에 λΆ€λ”ͺμΉ©λ‹ˆλ‹€.

λ‚΄ ts νŒŒμΌμ—μ„œ λ¬Έμžμ—΄μ„ 숫자둜 λ³€ν™˜ν•˜λŠ” κ°„λ‹¨ν•œ 방법을 μΆ”κ°€ν–ˆμŠ΅λ‹ˆλ‹€.

개인 convertStringToNumber (κ°’ : λ¬Έμžμ—΄) : 숫자 {
λ°˜ν™˜ + κ°’;
}

그런 λ‹€μŒ htmlμ—μ„œ μœ„λ„ / 경도λ₯Όμ΄ λ©”μ„œλ“œμ— μ „λ‹¬ν•©λ‹ˆλ‹€.

[latitude] = "convertStringToNumber (location.latitude)"[경도] = "
convertStringToNumber (location.longitude) ">

β€”
이 μŠ€λ ˆλ“œλ₯Ό κ΅¬λ…ν–ˆκΈ° λ•Œλ¬Έμ—μ΄ λ©”μ‹œμ§€κ°€ μ „μ†‘λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
이 이메일에 직접 λ‹΅μž₯ν•˜κ³  GitHubμ—μ„œ ν™•μΈν•˜μ„Έμš”.
https://github.com/SebastianM/angular2-google-maps/issues/330#issuecomment-290757110 ,
λ˜λŠ” μŠ€λ ˆλ“œ μŒμ†Œκ±°
https://github.com/notifications/unsubscribe-auth/AY4FmON0vwkqtvbC3qlBK1E6SQQQsAr2ks5rrSXggaJpZM4IaCkp
.

μ™€μš° λ‚˜λŠ”μ΄ 문제λ₯Ό λ°œκ²¬ν•˜κΈ° 전에 ν•œ μ‹œκ°„ 이상이 λ¬Έμ œμ— λŒ€ν•΄ 머리λ₯Ό μΉ˜κ³ μžˆμ—ˆμŠ΅λ‹ˆλ‹€. 이것은 λ‚˜λ₯Ό μœ„ν•΄ μ™„λ²½ν•˜κ²Œ μž‘λ™ν–ˆμŠ΅λ‹ˆλ‹€.)

일반적으둜 λ‚΄ κ²½ν—˜μ— λ”°λ₯΄λ©΄ agm λ§ˆμ»€κ°€ DOM에 ν‘œμ‹œλ˜μ§€λ§Œ ν‘œμ‹œλ˜μ§€ μ•ŠλŠ” 경우 ngFor에 잘λͺ»λœ 개체 μœ ν˜•μ„ μ œκ³΅ν–ˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€ (μœ„μ—μ„œ μ–ΈκΈ‰ ν•œ 숫자 μœ ν˜•κ³Ό 같은 λΆ€μ μ ˆν•œ μœ ν˜• λ˜λŠ” μœ„λ„ 및 경도λ₯Ό μ „ν˜€ ν¬ν•¨ν•˜μ§€ μ•ŠλŠ” μœ ν˜•). λ‚΄ κ²½μš°μ˜€λ‹€). 마컀 λ°°μ—΄λ‘œ λ³΄λ‚΄λŠ” λ‚΄μš©μ„ λ‹€μ‹œ ν™•μΈν•˜μ‹­μ‹œμ˜€.

이 문제λ₯Ό λ‹€μ‹œ μ—΄κ³  μ‹ΆμŠ΅λ‹ˆλ‹€.
μ‚¬μš©μžκ°€μ§€λ„μ˜ ν•œ 지점을 ν΄λ¦­ν•˜λ©΄ 미리 μ •μ˜ 된 마컀λ₯Ό ν‘œμ‹œν•˜κ³  화면에 마컀λ₯Ό μƒμ„±ν•˜λ €κ³ ν•˜μ§€λ§Œ ngforλ₯Ό μ‚¬μš©ν•˜λ©΄ λ§ˆμ»€κ°€μ§€λ„μ— ν‘œμ‹œλ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
λ‚΄ HTML νŒŒμΌμ—λŠ”

<sebm-google-map
          [latitude]="lat"
          [longitude]="lng"
          [zoom]="zoom"
          [disableDefaultUI]= false
          [zoomControl]= true
          (mapClick)="mapClicked($event)">

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

            <sebm-google-map-info-window>
              <strong>{{m.name}}</strong>
            </sebm-google-map-info-window>
          </sebm-google-map-marker>
        </sebm-google-map>

λ‚΄ service.ts νŒŒμΌμ— 마컀λ₯Ό μΆ”κ°€ν•˜κ³  ν‘œμ‹œν•˜λ €λ©΄

  getMarkers(){
    var markers = JSON.parse(localStorage.getItem('markers'));
    return markers;
  }

  addMarker(newMarker){
    //fetch marker that are already there
    var markers = JSON.parse(localStorage.getItem('markers'));

    // Push to array
    markers.push(newMarker);

    //set markers again
    localStorage.setItem('markers',JSON.stringify(markers))
  }


저도 lat 및 long 값을 string 개체둜 μ €μž₯ν–ˆκΈ° λ•Œλ¬Έμ— λ‹€μŒκ³Ό 같이 DecimalPipe λ‚΄μž₯ 된 것을 μ‚¬μš©ν•΄μ•Όν–ˆμŠ΅λ‹ˆλ‹€.

... *ngFor="let pin of pins" [latitude]="pin.lat|number:'1.0-8'" ...

곡식 λ¬Έμ„œ : https://angular.io/api/common/DecimalPipe

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰