#dictionary #3d #node-red
#словарь #3D #узел-красный
Вопрос:
Я пытаюсь использовать плагин «worldmap» в node-red для отображения 3D-здания в Барселоне, Испания, которое я построил из полигонов, используя координаты из следующего источника (который также показывает, как должно выглядеть здание): http://bl.ocks.org/sigon426/11283563
Проблема в том, что я вижу его только в 2D, как на следующем скриншоте:
Документация для плагина worldmap (https://flows.nodered.org/node/node-red-contrib-web-worldmap ) говорит что-то о index3d.html , но когда я перехожу к http://localhost:1880/worldmap/index3d.html вместо того , чтобы http://localhost:1880/worldmap/index.html , я получаю совершенно пустую страницу, вообще без карты.
Я подтвердил, что это НЕ из-за опечатки, потому что, если я намеренно вставляю опечатку, я получаю сообщение об ошибке. Согласно документации, я также пытался использовать свой собственный ключ API (согласно документации), но это тоже не помогло.
Кто-нибудь когда-нибудь получал здание для рендеринга в 3D, и если да, не могли бы вы поделиться своим кодом и / или тем, как вы его получили index3d.html чтобы не быть пустой страницей?
код node-red приведен ниже:
[
{
"id": "21ba508dc4c4653a",
"type": "tab",
"label": "Auto-Update_bc",
"disabled": false,
"info": "",
"env": []
},
{
"id": "00d83d478ca0a1fc",
"type": "inject",
"z": "21ba508dc4c4653a",
"name": "",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": true,
"onceDelay": 0.1,
"topic": "",
"payloadType": "date",
"x": 130,
"y": 200,
"wires": [
[
"833bc73b50bcca41"
]
]
},
{
"id": "5a880b81067dacf2",
"type": "function",
"z": "21ba508dc4c4653a",
"name": "Set Initial conditions",
"func": "nicons = ["car", "ship", "bus", "plane", "iss", "uav", "friend"];nmsg.payload = {"name":"test", "lat":0.0, "lon":0.0,"icon":icons[Math.floor(Math.random()*icons.length)]};nmsg.timestep = 0;nreturn msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 620,
"y": 200,
"wires": [
[
"33c3faef8e85ea91"
]
]
},
{
"id": "9f2cc79939761256",
"type": "worldmap",
"z": "21ba508dc4c4653a",
"name": "",
"lat": "",
"lon": "",
"zoom": "",
"layer": "OSMG",
"cluster": "",
"maxage": "",
"usermenu": "show",
"layers": "show",
"panit": "false",
"panlock": "false",
"zoomlock": "false",
"hiderightclick": "false",
"coords": "none",
"showgrid": "false",
"allowFileDrop": "false",
"path": "/worldmap",
"overlist": "DR,CO,RA,DN,HM",
"maplist": "OSMG,OSMC,EsriC,EsriS,EsriT,EsriDG,UKOS,SW",
"mapname": "",
"mapurl": "",
"mapopt": "",
"mapwms": false,
"x": 1100,
"y": 200,
"wires": []
},
{
"id": "33c3faef8e85ea91",
"type": "function",
"z": "21ba508dc4c4653a",
"name": "Move Object",
"func": "if (global.instruction == "BREAK") {n msg.payload.thing = "Done";n throw "I'm Done";n}nn/*nicons = ["car", "ship", "bus", "plane", "iss", "uav", "friend"];nmsg.payload.icon = icons[Math.floor(Math.random()*icons.length)];nmsg.payload.name = "test" msg.timestep;nmsg.timestep = msg.timestep 1;nmsg.payload.lon = msg.payload.lon 1;nmsg.payload.lon = msg.payload.lon % 180;n*/nnvar geo = { "type": "FeatureCollection",n"features": [n {n "type": "Feature",n "properties": {n "wallColor": "rgb(255,0,0)",n "roofColor": "rgb(255,128,0)",n "height": 30,n "minHeight": 0,n "piso": 0n },n "geometry": {n "type": "Polygon",n "coordinates": [n [n [2.1853861212730408, 41.38901629106905],n [2.185828685760498, 41.388623892423745],n [2.1864724159240723, 41.38910281968238],n [2.185984253883362, 41.3894167364756],n [2.1853861212730408, 41.38901629106905]n ]n ]n }n },n {n "type": "Feature",n "properties": {n "wallColor": "",n "roofColor": "",n "height": 60,n "minHeight": 30,n "piso": 1n },n "geometry": {n "type": "Polygon",n "coordinates": [n [n [2.185606062412262, 41.389012266479575],n [2.1858233213424683, 41.3888210981928],n [2.186225652694702, 41.38910483197434],n [2.1859654784202576, 41.38927386427688],n [2.185606062412262, 41.389012266479575]n ]n ]n }n },n {n "type": "Feature",n "properties": {n "wallColor": "",n "roofColor": "",n "height": 90,n "minHeight": 60,n "piso": 2n },n "geometry": {n "type": "Polygon",n "coordinates": [n [n [2.185753583908081, 41.38902031565826],n [2.1858367323875423, 41.388959946793776],n [2.1860405802726746, 41.38910885655806],n [2.1859386563301086, 41.389177274443526],n [2.1857374906539917, 41.389022327952766],n [2.185753583908081, 41.38902031565826]n ]n ]n }n },n {n "type": "Feature",n "properties": {n "wallColor": "rgb(255,0,0)",n "roofColor": "rgb(255,128,0)",n "height": 120,n "minHeight": 90,n "piso": 3n },n "geometry": {n "type": "Polygon",n "coordinates": [n [n [2.185858190059662, 41.38905653695002],n [2.185858190059662, 41.38907867217396],n [2.185882329940796, 41.38907867217396],n [2.185882329940796, 41.38905653695002],n [2.185858190059662, 41.38905653695002]n ]n ]n }n }n]n}nnmsg.payload.command = {map:{overlay:"Building " msg.timestep.toString(), geojson:geo, fit:false}};nreturn msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 850,
"y": 200,
"wires": [
[
"73887a06a6c29e1f",
"9f2cc79939761256"
]
]
},
{
"id": "833bc73b50bcca41",
"type": "change",
"z": "21ba508dc4c4653a",
"name": "",
"rules": [
{
"t": "set",
"p": "instruction",
"pt": "global",
"to": "GO",
"tot": "str"
}
],
"action": "",
"property": "",
"from": "",
"to": "",
"reg": false,
"x": 360,
"y": 200,
"wires": [
[
"5a880b81067dacf2"
]
]
},
{
"id": "d2eb2693c01b45b5",
"type": "switch",
"z": "21ba508dc4c4653a",
"name": "",
"property": "instruction",
"propertyType": "global",
"rules": [
{
"t": "neq",
"v": "STOP",
"vt": "str"
}
],
"checkall": "true",
"repair": false,
"outputs": 1,
"x": 910,
"y": 280,
"wires": [
[
"33c3faef8e85ea91"
]
]
},
{
"id": "73887a06a6c29e1f",
"type": "delay",
"z": "21ba508dc4c4653a",
"name": "",
"pauseType": "delay",
"timeout": "5",
"timeoutUnits": "seconds",
"rate": "1",
"nbRateUnits": "1",
"rateUnits": "second",
"randomFirst": "1",
"randomLast": "5",
"randomUnits": "seconds",
"drop": false,
"allowrate": false,
"outputs": 1,
"x": 780,
"y": 280,
"wires": [
[
"d2eb2693c01b45b5"
]
]
},
{
"id": "b5cf5eebe2c484d5",
"type": "inject",
"z": "21ba508dc4c4653a",
"name": "Breaker",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"payloadType": "date",
"x": 150,
"y": 380,
"wires": [
[
"1bccee288132318f"
]
]
},
{
"id": "1bccee288132318f",
"type": "change",
"z": "21ba508dc4c4653a",
"name": "",
"rules": [
{
"t": "set",
"p": "instruction",
"pt": "global",
"to": "STOP",
"tot": "str"
}
],
"action": "",
"property": "",
"from": "",
"to": "",
"reg": false,
"x": 370,
"y": 380,
"wires": [
[]
]
}
]
Комментарии:
1. Я думаю, что я разобрался в этом вопросе. Я повторно сгенерировал ключ API, на этот раз без установки каких-либо дополнительных флажков. Это устранило проблему index3d.html рендеринг в виде пустой страницы.
Ответ №1:
Похоже, что поставщик 3dmaps удалил анонимный доступ в рамках перехода к коммерческой организации, бесплатный доступ отмечен как скоро.
Похоже, вам понадобится ключ API, чтобы заставить его работать и редактировать index3d.html чтобы использовать ключ
Я верю, что вы можете получить ключ здесь:
Редактировать:
По-видимому, вам нужен ключ API от https://mapbox.com нет https://3dbuildings.com
И вам нужно раскомментировать здесь 2 строки (добавить ключ api) и закомментировать строку сразу после комментария
// If you have a mapbox API key it may be better to use that - uncomment these lines and comment out the mbstyle below.
mapboxgl.accessToken = 'insert your key here';
var mbstyle = 'mapbox://styles/mapbox/streets-v9';
// var mbstyle = 'https://data.osmbuildings.org/0.2/anonymous/style.json';
Комментарии:
1. Как я упоминал в своем первоначальном сообщении, я уже пробовал это. Смогли ли вы заставить свой работать, делая это? Если да, как вы думаете, вы могли бы а) поделиться своим кодом node-red и б) указать мне URL, по которому вам нужно было перейти (index3d.html , Я предполагаю)?
2. DCJ (автор узлов) заставил его работать со своим (старым) ключом API, я просто пересылал его ответ, когда показывал ему вопрос (он не использует SO)
3. Я понимаю. 1) Я очень новичок в node-red. Не могли бы вы пояснить, что означает «ТАК»? 2) Я предполагаю, что нет никаких шансов получить образец кода или точно выяснить, следует ли переходить к index3d или index?
4. ИТАК -> Переполнение стека. Если вы хотите попробовать поговорить с DCJ напрямую, я предлагаю вам опубликовать сообщение либо на форуме, либо на узле-RED Slack
5. Я понимаю. Спасибо !!.