0

Мне нужно создать новые круги геообъектов динамически для каждого местоположения, которое я получаю от адаптера Worklight. Мне нужно сделать это с помощью цикла, поскольку я не знаю, сколько мест определено в бэкэнд-сервисе. Кроме того, новое местоположение можно определить, пока приложение работает.Как настроить динамические настройки местоположения в Worklight?

Я видел несколько образцов для установленного набора мест, но я не знаю, как получить это работает в моем сценарии ...

ответ

1

я уже нашел решение. Это код, в случае, если кто-то нуждается в нем:

var triggers = new Object(); 
triggers.Geo={}; 
triggers.Geo.Cliente = { 
    type: "Enter", 
    circle: { 
     longitude: xxxxxx, 
     latitude: xxxxxxx, 
     radius: proximidad // 300m 
    }, 
    confidenceLevel: "high", // ~95% confidence that we are in the circle 
    eventToTransmit: { 
     event: { 
     name: 'clientecerca' 
     }, 
     transmitImmediately: true 
    } 
    }; 
0

Создание триггеров с помощью внешней функции:

var triggers = new Object(); 
triggers.Geo={}; 
triggers.Geo.Cliente = generaTriggers("41.43373","-3.80052"); 

function generaTriggers(lat,lon){ 

    var Cliente ={ 
     type: "Enter", 
     circle: { 
      longitude: lon, 
      latitude: lat, 
      radius: proximidad // 300m 
     }, 
     confidenceLevel: "high", // ~95% confidence that we are in the circle 
     eventToTransmit: { 
      event: { 
      name: 'clientecerca' 
      }, 
      transmitImmediately: true 
     } 
     }; 
    return Cliente; 
} 
0

Это конечный результат для добавления динамически расположение триггерами:

* Примечание : vector - это массив javascript, который содержит широту и долготу различных кругов геообъектов *

function Geofencing(){ 

var policy = { Geo: WL.Device.Geo.Profiles.LiveTracking() }; 
var triggers = new Object(); 
triggers.Geo={}; 

var triggersgenerados = generaTriggers(); 

triggers.Geo = triggersgenerados; 




WL.Device.startAcquisition(policy, triggers, geoFailure); 
WL.App.setKeepAliveInBackground(true); 
} 
function generaTriggers(){ 
    var triggersvisitas= new Object; 
    for(var i=0; i< vector.length;i++){ 
     var Cliente ={ 
       type: "Enter", 
       circle: { 
        longitude: vector[i].longitud, 
        latitude: vector[i].latitud, 
        radius: proximidad // 300m 
       }, 
       confidenceLevel: "high", 

       eventToTransmit: { 
        event: { 
        name: 'clientecerca' 
        }, 
        transmitImmediately: true 
       } 
       }; 
     triggersvisitas["Cliente"+i]=Cliente; 
    } 


    return triggersvisitas; 
}