代码之家  ›  专栏  ›  技术社区  ›  Vikram Eswar

如何将openlayers作为库添加到我的oracle jet项目中?

  •  0
  • Vikram Eswar  · 技术社区  · 7 年前

    我使用ojet create、build、serve命令创建了一个oracle jet项目。或者,我还使用NetBeans 8.2 IDE创建了该项目。我无法将开放层添加为库。我想创建一个由地图组成的web应用程序。

    2 回复  |  直到 7 年前
        1
  •  0
  •   Ray    7 年前

    不确定为什么无法添加库,因为尚未指定如何添加 您试图添加它,如果有错误,是什么错误。

    这就是我要做的:

    1. 之后 ojet create 运行命令 npm install --save ol . 这会将库添加到node\u modules文件夹中,并将其添加到包中。json。如果您不想将其添加到您的软件包中。仅限json使用 npm install ol .
    2. 导航到脚本文件夹->配置文件夹->oraclejet构建。js。参见注释的第37到45行?取消注释这些行并添加您自己的库路径,如下所示:

      copyCustomLibsToStaging: {
        fileList: [
         {
           cwd:'node_modules/ol/',
           src: ['*'],
           dest: 'web/js/libs/ol'
         }
        ]
       },
      
    3. 现在,您可以使用require模块访问库。假设您使用模板创建了一个ojet项目,您可以从“main”提供对该库的访问。js文件。
        2
  •  0
  •   Vikram Eswar    7 年前

    我的主要。js文件如下。。

    /**
     * Copyright (c) 2014, 2017, Oracle and/or its affiliates.
     * The Universal Permissive License (UPL), Version 1.0
     */
    'use strict';
    
    /**
     * Example of Require.js boostrap javascript
     */
    
    requirejs.config(
    {
      baseUrl: 'js',
    
      // Path mappings for the logical module names
      // Update the main-release-paths.json for release mode when updating the mappings
      paths:
      //injector:mainReleasePaths
      {
        'knockout': 'libs/knockout/knockout-3.4.0.debug',
        'jquery': 'libs/jquery/jquery-3.1.1',
        'jqueryui-amd': 'libs/jquery/jqueryui-amd-1.12.0',
        'promise': 'libs/es6-promise/es6-promise',
        'hammerjs': 'libs/hammer/hammer-2.0.8',
        'ojdnd': 'libs/dnd-polyfill/dnd-polyfill-1.0.0',
        'ojs': 'libs/oj/v3.2.0/debug',
        'ojL10n': 'libs/oj/v3.2.0/ojL10n',
        'ojtranslations': 'libs/oj/v3.2.0/resources',
        'text': 'libs/require/text',
        'signals': 'libs/js-signals/signals',
        'customElements': 'libs/webcomponents/CustomElements',
        'proj4': 'libs/proj4js/dist/proj4-src',
        'css': 'libs/require-css/css',
      }
      //endinjector
      ,
      // Shim configurations for modules that do not expose AMD
      shim:
      {
        'jquery':
        {
          exports: ['jQuery', '$']
        }
      }
    }
    );
    
    /**
     * A top-level require call executed by the Application.
     * Although 'ojcore' and 'knockout' would be loaded in any case (they are specified as dependencies
     * by the modules themselves), we are listing them explicitly to get the references to the 'oj' and 'ko'
     * objects in the callback
     */
    require(['ojs/ojcore', 'knockout', 'appController', 'ojs/ojknockout',
      'ojs/ojmodule', 'ojs/ojrouter', 'ojs/ojnavigationlist', 'ojs/ojbutton', 'ojs/ojtoolbar','libs/ol'],
      function (oj, ko, app) { // this callback gets executed when all required modules are loaded
    
        $(function() {
    
          function init() {
            oj.Router.sync().then(
              function () {
                // Bind your ViewModel for the content of the whole page body.
                ko.applyBindings(app, document.getElementById('globalBody'));
              },
              function (error) {
                oj.Logger.error('Error in root start: ' + error.message);
              }
            );
          }
    
          // If running in a hybrid (e.g. Cordova) environment, we need to wait for the deviceready 
          // event before executing any code that might interact with Cordova APIs or plugins.
          if ($(document.body).hasClass('oj-hybrid')) {
            document.addEventListener("deviceready", init);
          } else {
            init();
          }
    
        });
    
      }
    );