改写WebAppbuilder的Near Me控件

将Near Me移植到本地内网时,由于Near Me的setting.js文件中的setConfig函数中

var helperServices = portalUtils.getportal(this.appconfig.portalUrl); 

读取的都是portal默认的esri的一些路径,如几何服务、搜索服务等,因此需要手动更改几个地方。

1、search.js文件:

112行:

        array.forEach(geocoders, lang.hitch(this, function (geocoder) {
          if (geocoder.url) {
            if (geocoder.url.indexOf(".arcgis.com/arcgis/rest/services/World/GeocodeServer") > -1) {
              geocoder.hasEsri = true;
              geocoder.locator = new Locator(geocoder.url);
              geocoder.placefinding = true;
              geocoder.singleLineFieldName = "SingleLine";
              geocoder.name = geocoder.name ||
              "Esri World Geocoder";
              //set place holder with geocoder name if it is not configured
              geocoder.placeholder = geocoder.placeholder || geocoder.name;
              if (this.config.searchExtent) {
                geocoder.searchExtent = this.map.extent;
                geocoder.localSearchOptions = {
                  minScale: 300000,
                  distance: 50000
                };
              }
              geocoder.suggest = true;
              defaultSources.push(geocoder);
            } else if (esriLang.isDefined(geocoder.singleLineFieldName)) {
              //Add geocoders with a singleLineFieldName defined
              geocoder.locator = new Locator(geocoder.url);
              geocoder.suggest = true;
              defaultSources.push(geocoder);
            }
          }
        }));
改成:

          // if (geocoder.url.indexOf(".arcgis.com/arcgis/rest/services/World/GeocodeServer") > -1) {
              <span style="color:#ff0000;">geocoder.url="自己的检索服务";</span>
              geocoder.hasEsri = true;
              geocoder.locator = new Locator(geocoder.url);
              geocoder.placefinding = true;
              geocoder.singleLineFieldName = "SingleLine";
              geocoder.name = geocoder.name ||
              "Esri World Geocoder";
              //set place holder with geocoder name if it is not configured
              <span style="color:#ff6666;">geocoder.placeholder = "zj";</span>
              if (this.config.searchExtent) {
                geocoder.searchExtent = this.map.extent;
                geocoder.localSearchOptions = {
                  minScale: 300000,
                  distance: 50000
                };
              }
              geocoder.suggest = true;
              defaultSources.push(geocoder);
            // } else if (esriLang.isDefined(geocoder.singleLineFieldName)) {
            //   //Add geocoders with a singleLineFieldName defined
            //   geocoder.locator = new Locator(geocoder.url);
            //   geocoder.suggest = true;
            //   defaultSources.push(geocoder);
            // }
2、Widget.js:

308行:

 _initReverseGeocoder: function () {
      //By default if no geocoding service available in org then ArcGis online GeocodeServer will be used for reverse geocoding.
      var geocodeURL =
        "https://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer";
      if (this.config.helperServices && this.config.helperServices.geocode &&
        this.config.helperServices.geocode[0] && this.config.helperServices
        .geocode[0].url) {
        geocodeURL = this.config.helperServices.geocode[0].url;
      }
      //create the locator instance to reverse geocode the address
      this._locatorInstance = new Locator(geocodeURL);
      this._locatorInstance.on("location-to-address-complete", lang.hitch(
        this, this._onLocationToAddressComplete));
    },
改成:

 _initReverseGeocoder: function () {
      //By default if no geocoding service available in org then ArcGis online GeocodeServer will be used for reverse geocoding.
      <span style="color:#ff0000;">var geocodeURL ="自己的检索服务";</span>
      //if (this.config.helperServices && this.config.helperServices.geocode &&
       // this.config.helperServices.geocode[0] && this.config.helperServices
       // .geocode[0].url) {
      //  geocodeURL = this.config.helperServices.geocode[0].url;
      //}
      //create the locator instance to reverse geocode the address
      this._locatorInstance = new Locator(geocodeURL);
      this._locatorInstance.on("location-to-address-complete", lang.hitch(
        this, this._onLocationToAddressComplete));
    },
 

544行:

 _createBuffer: function () {
      var params, geometryService;
      geometryService = new GeometryService(this.config.helperServices.geometry.url);
改成:

 _createBuffer: function () {
      var params, geometryService;
      <span style="color:#ff0000;">geometryService = new GeometryService(“自己的几何服务”);</span>

3、总配置文件config.json

更改geometryService:""的值。









  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值