为什么我的小部件不能在wirecloud中工作?

时间:2016-04-19 08:05:40

标签: fiware fiware-wirecloud

我使用html,css和js制作了以下小部件。当您搜索我们的数据库中存在的关键字(例如桃子或草莓)时,这本身就可以正常工作:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Search Seller widget</title>
<meta name="viewport" content="width=device-width">
<style>

  #mapCanvas {
    width: 550px;
    height: 600px;
    float: left;
    border-style: solid; color: #59C0DF;

  }
  #infoPanel {
    float: left;
    margin-left: 10px;
  }
  #infoPanel div {
    margin-bottom: 5px;
  }

  #tbl{
     border-collapse: collapse;
  }
  #tbl, td, th{
    border: 2px solid #70B8FF;
     padding: 5px;

  }
  th{
    font-style: bold;
    color: black;
    background-color: #59C0DF;
  }

  .btn {
  background: #3498db;
  background-image: -webkit-linear-gradient(top, #3498db, #2980b9);
  background-image: -moz-linear-gradient(top, #3498db, #2980b9);
  background-image: -ms-linear-gradient(top, #3498db, #2980b9);
  background-image: -o-linear-gradient(top, #3498db, #2980b9);
  background-image: linear-gradient(to bottom, #3498db, #2980b9);
  -webkit-border-radius: 28;
  -moz-border-radius: 28;
  border-radius: 28px;
  font-family: Courier New;
  color: #ffffff;
  font-size: 20px;
  padding: 10px 20px 10px 20px;
  text-decoration: none;
}

.btn:hover {
  background: #3cb0fd;
  background-image: -webkit-linear-gradient(top, #3cb0fd, #3498db);
  background-image: -moz-linear-gradient(top, #3cb0fd, #3498db);
  background-image: -ms-linear-gradient(top, #3cb0fd, #3498db);
  background-image: -o-linear-gradient(top, #3cb0fd, #3498db);
  background-image: linear-gradient(to bottom, #3cb0fd, #3498db);
  text-decoration: none;
}

.textbox {
    border: 1px solid #848484;
    -webkit-border-radius: 30px;
    -moz-border-radius: 30px;
    border-radius: 30px;
    outline:0;
    height:25px;
    width: 120px;
    padding-left:10px;
    padding-right:10px;
  }
</style>
</head>
<body onload="initialize(45.2671, 19.8335,0)"> <!--bgcolor="#E6E6FA"-->

<div id="top">

  <label>
    <input type="url" id="url" class="textbox" value="">
  </label>

  <label>
    <button id="get" class="btn">GET</button>
  </label>
    <label>City</label>
    <input type="text" id="City" class="textbox" value="" readonly>
    <label>Company</label>
    <input type="text" id="Company" class="textbox" value="" readonly>
    <label>Latitude</label>
    <input type="text" id="Lat" class="textbox" value="" readonly>
    <label>Longitude</label>
    <input type="text" id="Lon" class="textbox" value="" readonly>


<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="http://maps.googleapis.com/maps/api/js"></script>
</br>
<div id="map" style="width:500px;height:380px; border-style: solid; border-color: #3498db; display: none;"></div>
</div>

<div>
    <a href="http://www.panonit.com" target="_blank"> <img src="PanonitLogo.png" alt="Logo" style="width:160px;height:75px; margin-top:15px" > </a>
    <a href="http://www.finish-project.eu/" target="_blank"> <img src="Cropped.png" alt="Logo" style="width:160px;height:75px;margin-left:15px; margin-top:15px" > </a>
    <a href="http://ec.europa.eu/index_en.htm" target="_blank"> <img src="European.jpg" alt="Logo" style="width:160px;height:75px;margin-left:15px; margin-top:15px" > </a>
</div>


<script>
var obj;

var cors_api_url = 'https://cors-anywhere.herokuapp.com/';
function doCORSRequest(options, printResult) {
var x = new XMLHttpRequest();
x.open(options.method, cors_api_url + options.url);
x.onload = x.onerror = function() {
  printResult(
    options.method + ' ' + options.url + '\n' +
    x.status + ' ' + x.statusText + '\n\n' +
    (x.responseText || '')
  );
};
x.send(options.data);
}
// Bind event
(function() {
var urlField = document.getElementById('url');
var obj;


document.getElementById('get').onclick = function(e) {
    var glat;
    var glon;
  e.preventDefault();
  doCORSRequest({
    method: this.id = 'GET',
    url: 'trace.panonit.com/widgets/GetFieldCoordinates/' + urlField.value
  }, function printResult(result) {
    result = result.substring(result.length, result.indexOf('{'));
    obj = JSON.parse(result);

    var cityField = document.getElementById('City');
    cityField.value = obj.City;
    var company = document.getElementById('Company');
    company.value = obj.Company;
    var lat = document.getElementById('Lat');
    lat.value = obj.Lat;
    glat = lat.value;
    var lon = document.getElementById('Lon');
    lon.value = obj.Lon;
    glon = lon.value;
    if(obj.Lat==null || obj.Lon ==null)
    {
       //initialize(glat, glon);
       document.getElementById('City').value = "City not found";
       document.getElementById('Company').value = "Company not found";
       document.getElementById('Lat').value = "Latitude not found";
       document.getElementById('Lon').value = "Longitude not found";
       initialize(45.2671, 19.8335,0);
    }
    else {
        initialize(glat, glon,1);
    }

  });
};
})();


function initialize(lat, lon, displayMarker) {
  document.getElementById('map').style.display = "";
  var mapProp = {
    center:new google.maps.LatLng(lat,lon),
    zoom:5,
    mapTypeId:google.maps.MapTypeId.ROADMAP
  };
  var map=new google.maps.Map(document.getElementById("map"),mapProp);
  if(displayMarker==1){
      var marker = new google.maps.Marker({
                        position: new google.maps.LatLng( lat,lon),
                        animation: google.maps.Animation.DROP,
                        map: map,
                        title: 'Crop marker!'
                    });
  }

}
</script>
</body>
</html>

当我在fispace的帮助下将其转换为小部件时,在eclipse中添加,然后继续将其上传到fiware lab或fispace的wirecloud中,当它显示错误时api key。所以我得到了谷歌的api密钥并附上它:

<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyBGrI_BKBCPZfOCskNEH5B5wiJhuV1yKeI"></script> 

但我仍然在线云内部显示灰色的地图。 任何人都可以帮我解决这个问题吗?谢谢。

1 个答案:

答案 0 :(得分:0)

使用原始HTML文件时,由于混合内容而出现错误。使用&#34; https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js&#34;和&#34; https://maps.googleapis.com/maps/api/js&#34;加载jquery和谷歌地图(考虑到https的s)修复了问题。至少在我搜索peach时,小部件会显示Arsen Agro公司。