우리는 다른 위치에 위치 된 산업용 식물을위한 웹 시각화를 구축하고있다. 현재 개요 페이지에는 표 레이아웃이 사용됩니다. 각 행은 하나의 식물과 그 가장 중요한 상태와 가치를 나타냅니다.knockout.js를 leaflet.js지도 표시 자와 함께 사용하는 방법은 무엇입니까?
지금 양자 택일 마커지도를 표시하는 요구 사항이있다. 각 마커의 색상은 현재 상태를 나타냅니다 (녹색 = ok, 빨간색 = 오류, 노란색 = 경고 등). 현재 테이블 기반 페이지에서
우리는 (그 안에 및 해당 사업부의의 등) 테이블 행에 뷰 모델에서 각각의 식물의 특성을 결합하는 knockout.js를 사용합니다. 뷰 모델의 값은 상태 또는 값이 변경 될 때마다 signalr을 통해 업데이트되므로이 값을 플랜트 상태에 대한 실시간 이벤트 기반 표현으로 간주 할 수 있습니다.
이 뷰 모델에는 맵에 표시해야하는 모든 정보가 이미 포함되어 있으므로 리필 표시자를 뷰 모델에 바인딩하고 싶습니다. 그러나이를 수행하는 방법을 알 수 없습니다. 문제는 data-bind
속성과 함께 사용할 수있는 표시에 대한 요소가 없다는 것입니다.
정확히 말하면 각 플랜트에 (정적 인) 마커를 추가 할 수는 있지만, 뷰 모델에 변경 값을 동적으로 나타내려면 뷰 모델에 데이터 바인딩 할 수 없습니다. 그것을 할 수있는 방법이 있습니까?
정말 완벽하게 우리의 요구에 맞는로 전단지와에 가고 싶습니다. 웹 응용 프로그램은 영구적으로 인터넷에 연결되어 있지 않은 특수 그물에서 실행해야하므로 우리는 우리 자신의 타일을 제공해야합니다 (전단 및 Maperetive에서 효과적입니다). 우리의 필요에 맞는 전단지 이외의 해결책이 있다면 알려 주시기 바랍니다. 감사!
업데이트 : 여기 내 뷰 모델의 실제 JSON 데이터를합니다. 각 행은 스테이션을 나타냅니다. 각 역의 위도/경도는 아직 추가되지 않았지만이 문제는 무시해도됩니다.
{
"Rows":[
{
"StationId":1,
"Text":"MCU SE (SE 1/1) DAE",
"IsDialInStation":false,
"ConnectState":{
"StationId":1,
"DpId":14,
"Name":null,
"Value":1,
"TimeStamp":"\/Date(1400149092000)\/"
},
"ConnectStateText":"Nicht verbunden. Hier klicken für Anwahl!",
"HasActualData":{
"StationId":1,
"DpId":10,
"Name":null,
"Value":1,
"TimeStamp":"\/Date(1404890137000)\/"
},
"Anlage":{
"StationId":1,
"DpId":20101,
"Name":"Anlage",
"Value":1,
"TimeStamp":"\/Date(-62135596800000)\/"
},
"cmdSchalteAnlage":{
"StationId":1,
"DpId":20013,
"Name":"cmdAnlage",
"Value":0,
"TimeStamp":"\/Date(-62135596800000)\/"
},
"Kurzzeit":{
"StationId":1,
"DpId":20104,
"Name":"Kurzzeit",
"Value":0,
"TimeStamp":"\/Date(-62135596800000)\/"
},
"cmdSchalteKurzzeit":{
"StationId":1,
"DpId":20012,
"Name":"cmdKurzzeit",
"Value":0,
"TimeStamp":"\/Date(-62135596800000)\/"
},
"Handbetrieb":{
"StationId":1,
"DpId":20160,
"Name":"Handbetrieb",
"Value":0,
"TimeStamp":"\/Date(-62135596800000)\/"
},
"Betriebsbereit":{
"StationId":1,
"DpId":20121,
"Name":"Betriebsbereit",
"Value":1,
"TimeStamp":"\/Date(-62135596800000)\/"
},
"Heizt":{
"StationId":1,
"DpId":20451,
"Name":"Heizt",
"Value":0,
"TimeStamp":"\/Date(-62135596800000)\/"
},
"Sammelstoerung":{
"StationId":1,
"DpId":20140,
"Name":"Sammelstoerung",
"Value":0,
"TimeStamp":"\/Date(-62135596800000)\/"
},
"SammelstoerungTechnisch":{
"StationId":1,
"DpId":20129,
"Name":"SammelstoerungTechnisch",
"Value":0,
"TimeStamp":"\/Date(-62135596800000)\/"
},
"KommunikationsStoerung":{
"StationId":1,
"DpId":20138,
"Name":"KommunikationsStoerung",
"Value":0,
"TimeStamp":"\/Date(-62135596800000)\/"
},
"KommunikationsStoerungKE":{
"StationId":1,
"DpId":20137,
"Name":"KommunikationsStoerungKE",
"Value":0,
"TimeStamp":"\/Date(-62135596800000)\/"
},
"AllowCommands":true,
"AllowParameters":true
},
{
"StationId":2,
"Text":"MCU SE (SE 2/1) Turm",
"IsDialInStation":false,
"ConnectState":{
"StationId":2,
"DpId":14,
"Name":null,
"Value":1,
"TimeStamp":"\/Date(1402984603000)\/"
},
"ConnectStateText":"Nicht verbunden. Hier klicken für Anwahl!",
"HasActualData":{
"StationId":2,
"DpId":10,
"Name":null,
"Value":1,
"TimeStamp":"\/Date(1404890136000)\/"
},
"Anlage":{
"StationId":2,
"DpId":20101,
"Name":"Anlage",
"Value":1,
"TimeStamp":"\/Date(-62135596800000)\/"
},
"cmdSchalteAnlage":{
"StationId":2,
"DpId":20013,
"Name":"cmdAnlage",
"Value":0,
"TimeStamp":"\/Date(-62135596800000)\/"
},
"Kurzzeit":{
"StationId":2,
"DpId":20104,
"Name":"Kurzzeit",
"Value":0,
"TimeStamp":"\/Date(-62135596800000)\/"
},
"cmdSchalteKurzzeit":{
"StationId":2,
"DpId":20012,
"Name":"cmdKurzzeit",
"Value":0,
"TimeStamp":"\/Date(-62135596800000)\/"
},
"Handbetrieb":{
"StationId":2,
"DpId":20160,
"Name":"Handbetrieb",
"Value":0,
"TimeStamp":"\/Date(-62135596800000)\/"
},
"Betriebsbereit":{
"StationId":2,
"DpId":20121,
"Name":"Betriebsbereit",
"Value":1,
"TimeStamp":"\/Date(-62135596800000)\/"
},
"Heizt":{
"StationId":2,
"DpId":20451,
"Name":"Heizt",
"Value":0,
"TimeStamp":"\/Date(-62135596800000)\/"
},
"Sammelstoerung":{
"StationId":2,
"DpId":20140,
"Name":"Sammelstoerung",
"Value":0,
"TimeStamp":"\/Date(-62135596800000)\/"
},
"SammelstoerungTechnisch":{
"StationId":2,
"DpId":20129,
"Name":"SammelstoerungTechnisch",
"Value":0,
"TimeStamp":"\/Date(-62135596800000)\/"
},
"KommunikationsStoerung":{
"StationId":2,
"DpId":20138,
"Name":"KommunikationsStoerung",
"Value":0,
"TimeStamp":"\/Date(-62135596800000)\/"
},
"KommunikationsStoerungKE":{
"StationId":2,
"DpId":20137,
"Name":"KommunikationsStoerungKE",
"Value":0,
"TimeStamp":"\/Date(-62135596800000)\/"
},
"AllowCommands":true,
"AllowParameters":true
},
{
"StationId":4,
"Text":"Test W 1",
"IsDialInStation":false,
"ConnectState":{
"StationId":4,
"DpId":14,
"Name":null,
"Value":1,
"TimeStamp":"\/Date(1402996083000)\/"
},
"ConnectStateText":"Nicht verbunden. Hier klicken für Anwahl!",
"HasActualData":{
"StationId":4,
"DpId":10,
"Name":null,
"Value":0,
"TimeStamp":"\/Date(1404890134000)\/"
},
"Anlage":{
"StationId":4,
"DpId":20101,
"Name":"Anlage",
"Value":0,
"TimeStamp":"\/Date(-62135596800000)\/"
},
"cmdSchalteAnlage":{
"StationId":4,
"DpId":20013,
"Name":"cmdAnlage",
"Value":0,
"TimeStamp":"\/Date(-62135596800000)\/"
},
"Kurzzeit":{
"StationId":4,
"DpId":20104,
"Name":"Kurzzeit",
"Value":0,
"TimeStamp":"\/Date(-62135596800000)\/"
},
"cmdSchalteKurzzeit":{
"StationId":4,
"DpId":20012,
"Name":"cmdKurzzeit",
"Value":0,
"TimeStamp":"\/Date(-62135596800000)\/"
},
"Handbetrieb":{
"StationId":4,
"DpId":20160,
"Name":"Handbetrieb",
"Value":0,
"TimeStamp":"\/Date(-62135596800000)\/"
},
"Betriebsbereit":{
"StationId":4,
"DpId":20121,
"Name":"Betriebsbereit",
"Value":0,
"TimeStamp":"\/Date(-62135596800000)\/"
},
"Heizt":{
"StationId":4,
"DpId":20451,
"Name":"Heizt",
"Value":0,
"TimeStamp":"\/Date(-62135596800000)\/"
},
"Sammelstoerung":{
"StationId":4,
"DpId":20140,
"Name":"Sammelstoerung",
"Value":0,
"TimeStamp":"\/Date(-62135596800000)\/"
},
"SammelstoerungTechnisch":{
"StationId":4,
"DpId":20129,
"Name":"SammelstoerungTechnisch",
"Value":0,
"TimeStamp":"\/Date(-62135596800000)\/"
},
"KommunikationsStoerung":{
"StationId":4,
"DpId":20138,
"Name":"KommunikationsStoerung",
"Value":1,
"TimeStamp":"\/Date(-62135596800000)\/"
},
"KommunikationsStoerungKE":{
"StationId":4,
"DpId":20137,
"Name":"KommunikationsStoerungKE",
"Value":0,
"TimeStamp":"\/Date(-62135596800000)\/"
},
"AllowCommands":true,
"AllowParameters":true
},
{
"StationId":3,
"Text":"Test W 2",
"IsDialInStation":false,
"ConnectState":{
"StationId":3,
"DpId":14,
"Name":null,
"Value":1,
"TimeStamp":"\/Date(1402996031000)\/"
},
"ConnectStateText":"Nicht verbunden. Hier klicken für Anwahl!",
"HasActualData":{
"StationId":3,
"DpId":10,
"Name":null,
"Value":1,
"TimeStamp":"\/Date(1405488343000)\/"
},
"Anlage":{
"StationId":3,
"DpId":20101,
"Name":"Anlage",
"Value":1,
"TimeStamp":"\/Date(-62135596800000)\/"
},
"cmdSchalteAnlage":{
"StationId":3,
"DpId":20013,
"Name":"cmdAnlage",
"Value":0,
"TimeStamp":"\/Date(-62135596800000)\/"
},
"Kurzzeit":{
"StationId":3,
"DpId":20104,
"Name":"Kurzzeit",
"Value":0,
"TimeStamp":"\/Date(-62135596800000)\/"
},
"cmdSchalteKurzzeit":{
"StationId":3,
"DpId":20012,
"Name":"cmdKurzzeit",
"Value":0,
"TimeStamp":"\/Date(-62135596800000)\/"
},
"Handbetrieb":{
"StationId":3,
"DpId":20160,
"Name":"Handbetrieb",
"Value":0,
"TimeStamp":"\/Date(-62135596800000)\/"
},
"Betriebsbereit":{
"StationId":3,
"DpId":20121,
"Name":"Betriebsbereit",
"Value":1,
"TimeStamp":"\/Date(-62135596800000)\/"
},
"Heizt":{
"StationId":3,
"DpId":20451,
"Name":"Heizt",
"Value":0,
"TimeStamp":"\/Date(-62135596800000)\/"
},
"Sammelstoerung":{
"StationId":3,
"DpId":20140,
"Name":"Sammelstoerung",
"Value":1,
"TimeStamp":"\/Date(-62135596800000)\/"
},
"SammelstoerungTechnisch":{
"StationId":3,
"DpId":20129,
"Name":"SammelstoerungTechnisch",
"Value":1,
"TimeStamp":"\/Date(-62135596800000)\/"
},
"KommunikationsStoerung":{
"StationId":3,
"DpId":20138,
"Name":"KommunikationsStoerung",
"Value":0,
"TimeStamp":"\/Date(-62135596800000)\/"
},
"KommunikationsStoerungKE":{
"StationId":3,
"DpId":20137,
"Name":"KommunikationsStoerungKE",
"Value":0,
"TimeStamp":"\/Date(-62135596800000)\/"
},
"AllowCommands":true,
"AllowParameters":true
}
]
}
마커에는 어떤 값이 있습니까? 변경 사항 만 있고 색상을 변경하고 싶습니까? –
마크 업을 실제로 사용할 수없는 것 같아서 js로 마커를 삽입/업데이트해야합니다. 'subscribe' 함수를 사용하여 viewmodel의 업데이트를 가져 와서 마커에 전달할 수 있습니다. –
그게 좋은 출발점 이겠지만, 결국에는 가치가있는 텍스트와 식물 이름을 보여주는 텍스트가 더 많습니다. – Robert