Accessor

AMD: require(["geoscene/core/Accessor"], (Accessor) => { /* code goes here */ });
ESM: import Accessor from "@geoscene/core/core/Accessor";
类: geoscene/core/Accessor
子类:ActionBaseActiveLayerInfoAddressCandidateAggregateFieldAggregatedGeometryApplicationPropertiesApplicationPropertiesAreaMeasurement3DViewModelAreaMeasurementAnalysisAreasAndLengthsParametersAssociationAssociationGeometriesResultAttachmentInfoAttachmentQueryAttachmentsViewModelAttributeColorInfoAttributionViewModelAuthoringInfoAuthoringInfoVisualVariableBackgroundBarChartMediaInfoBarcodeScannerInputBasemapBasemapGalleryItemBasemapGalleryViewModelBasemapLayerListViewModelBasemapToggleViewModelBasemapViewBookmarkBookmarksViewModelBufferParametersBuildingComponentSublayerViewBuildingExplorerViewModelBuildingFilterBuildingLevelBuildingPhaseBuildingSublayerBuildingSummaryStatisticsButtonMenuItemButtonMenuViewModelCallout3DCameraChartMediaInfoValueChartMediaInfoValueSeriesClassBreakInfoClosestFacilityParametersClosestFacilitySolveResultCloudyWeatherCollectionColorBackgroundColorRampColorSizeStopColorStopColormapInfoColumnTemplateBaseComboBoxInputCompassViewModelContentControlPointsGeoreferenceConversionCoordinateConversionViewModelCornersGeoreferenceCreateFeaturesWorkflowDataCreateWorkflowDataCredentialCustomTemplateDataFileDataLayerDataModelDatePickerViewModelDateTimePickerInputDaylightViewModelDensifyParametersDeviceLocationFeedDimensionAnalysisDimensionAnalysisViewDimensionSimpleStyleDimensionalDefinitionDirectLineMeasurement3DViewModelDirectLineMeasurementAnalysisDirectionLineDirectionPointDirectionsEventDirectionsFeatureSetDirectionsViewModelDistanceMeasurement2DViewModelDistanceParametersDomainDrawDrawActionEdges3DEditorViewModelEditsElementElementExpressionInfoElevationProfileLineElevationProfileViewModelEnvironmentExpandViewModelExpressionInfoExpressionInfoExpressionInfoExpressionInfoExtentAndRotationGeoreferenceFacilityLayerInfoFeatureEffectFeatureFenceParametersFeatureFilterFeatureFilterFeatureFormViewModelFeatureLayerSourceFeatureReductionBinningFeatureReductionClusterFeatureReductionSelectionFeatureSetFeatureSnappingLayerSourceFeatureTableViewModelFeatureTemplateFeatureTemplatesViewModelFeatureTypeFeatureViewModelFenceGeotriggerFieldFieldColumnFieldConfigFieldGroupConfigFieldIndexFieldInfoFieldInfoFormatFindParametersFindResultFloorFilterViewModelFlowRendererFoggyWeatherFontFormTemplateFormatFullscreenViewModelFunctionResultGPMessageGamepadInputDeviceGamepadSettingsGamepadSettingsGeneralizeParametersGeometryGeometryFieldsInfoGeotriggerGeotriggerNotificationOptionsGeotriggersInfoGraphApplyEditsGraphApplyEditsResultGraphObjectGraphObjectTypeGraphPropertyGraphQueryGraphQueryResultGraphQueryStreamingResultGraphSearchGraphicGroundGroundViewGroupColumnHandleOwnerHeatmapColorStopHeightModelInfoHistogramViewModelHomeViewModelIdentifyParametersIdentifyResultImageAngleParametersImageAngleResultImageElementImageHistogramParametersImageIdentifyParametersImageIdentifyResultImageMediaInfoImageMediaInfoValueImageParametersImageParametersImagePixelLocationParametersImagePixelLocationResultImageSampleImageSampleParametersImageSampleResultInitialViewPropertiesInitialViewPropertiesInputInputFieldInputFieldGroupInputQuantizationParametersJobInfoKMLSublayerKnowledgeGraphLODLabelClassLayerLayerFloorInfoLayerListViewModelLayerOptionsLayerViewLegendLayerLegendViewModelLengthDimensionLengthsParametersLevelLayerInfoLineChartMediaInfoLineOfSightAnalysisLineOfSightAnalysisObserverLineOfSightAnalysisTargetLineOfSightTargetLineOfSightViewModelLineStyleMarker3DLineStylePattern3DLineSymbolMarkerLinearUnitListItemLocalBasemapsSourceLocalMediaElementSourceLocateViewModelMagnifierMapMapFloorInfoMapImageMeasurementViewModelMeshComponentMeshMaterialMeshTextureMosaicRuleMultidimensionalSubsetNAMessageNavigationNavigationToggleViewModelNetworkNetworkElementNetworkFeatureSetNetworkSystemLayersNetworkUrlOAuthInfoOffsetParametersOpacityStopOutputQuantizationParametersParameterValuePathPieChartMediaInfoPixelBlockPointBarrierPointCloudFilterPointCloudRendererPolygonBarrierPolylineBarrierPopupTemplatePopupViewModelPortalPortalFolderPortalGroupPortalItemPortalItemResourcePortalQueryParamsPortalQueryResultPortalRatingPortalUserPresentationPrintParametersPrintTemplatePrintViewModelProjectParametersPublishingInfoQueryQueryAssociationsParametersQueryAssociationsResultRadioButtonsInputRainyWeatherRasterColormapRendererRasterDataRasterFunctionRasterInfoRasterShadedReliefRendererRasterStretchRendererRelatedRecordsInfoRelatedRecordsInfoFieldOrderRelationParameters关系RelationshipQueryRendererRouteInfoRouteParametersRouteResultRouteSolveResultRouteStopSymbolsRouteSymbolsScaleBarViewModelScaleRangeSliderViewModelScaleRangesSceneFilterSceneModification搜索SearchLayerSearchLayerFieldSearchSourceSearchTableSearchTableFieldSearchViewModelServerInfoServiceAreaParametersServiceAreaSolveResultShadowCastViewModelSiteLayerInfoSizeStopSketchLabelOptionsSketchTooltipOptionsSketchViewModelSliceAnalysisSlicePlaneSlicePlaneSliceViewModelSlideSliderViewModelSnappingControlsViewModelSnappingOptionsSnowyWeatherSpatialReferenceStatisticDefinitionStopStyleOriginStylePattern3DSublayerSunLightingSunnyWeatherSwipeViewModelSwitchInputSymbolSymbol3DLayerSymbol3DVerticalOffsetSynthesizeAssociationGeometriesParametersTableTemplateTemplateItemTemplateItemGroupTemplateOptionsTerminalTerminalConfigurationTextBoxInputTileInfoTileMatrixSetTimeExtentTimeInfoTimeIntervalTimePickerViewModelTimeReferenceTimeSliderViewModelTopFeaturesQueryTopFilterTraceLocationTraceParametersTraceResultTrackViewModelTravelModeTrimExtendParametersUIUniqueValueUniqueValueClassUniqueValueGroupUniqueValueInfoUpdateWorkflowDataUtilityNetworkTraceViewModelVectorFieldRendererVideoElementViewViewAnimationViewStateViewingViewpointVirtualLightingVisualVariableWMSSublayerWMTSStyleWMTSSublayerWeatherViewModelWidgetWorkflowZoomViewModel
起始版本:GeoScene Maps SDK for JavaScript 4.0

Accessor 是一个抽象类,它便于访问实例属性,以及一种监视属性更改的机制。Accessor 的每个子类都定义了可直接访问或使用 get()set() 方法访问的属性。可以使用 watch() 方法监视属性更改。

另请参阅

属性概述

名称 类型 描述
String

类的名称。

更多详情
Accessor

属性详细信息

declaredClass Stringreadonly
起始版本:GeoScene Maps SDK for JavaScript 4.7

类的名称。声明的类名称格式化为 geoscene.folder.className

方法概述

名称 返回值类值 描述

添加一个或多个与对象的生命周期相关联的句柄。

更多详情
Accessor
Accessor

创建调用此方法的类的子类。

更多详情
Accessor
*

获取属性的值。

更多详情
Accessor
Boolean

如果存在指定的句柄组,则返回 true。

更多详情
Accessor

移除对象拥有的句柄组。

更多详情
Accessor
*

设置属性的值。

更多详情
Accessor
WatchHandle

监视实例上的属性更改。

更多详情
Accessor

方法详细说明

addHandles(handleOrHandles, groupKey)
起始版本:GeoScene Maps SDK for JavaScript 4.25

添加一个或多个与对象的生命周期相关联的句柄。当对象被销毁时,将移除句柄。

// Manually manage handles
const handle = reactiveUtils.when(
  () => !view.updating,
  () => {
    wkidSelect.disabled = false;
  },
  { once: true }
);

// Handle gets removed when the object is destroyed.
this.addHandles(handle);
参数
handleOrHandles WatchHandle|WatchHandle[]

对象销毁后,标记为要移除的句柄。

groupKey *
optional

标识句柄应添加到的组的键。组中的所有句柄稍后都可使用 Accessor.removeHandles() 进行删除。如果未提供键,则句柄将被添加到默认组。

createSubclass(classDefinition){Accessor}static
起始版本:GeoScene Maps SDK for JavaScript 4.21

创建调用此方法的类的子类。

参数
classDefinition Object

具有可混入新建类的属性和方法的对象。

返回
类型 描述
Accessor 返回新创建的类的构造函数。
get(path){*}

获取属性的值。

属性的名称可以引用实例中的属性。有关更多信息,请参阅使用属性指南部分。

view.get("scale");

它也可以是实例中更深层次的属性的路径。如果路径中的属性不存在,则 get() 返回 undefined

let title = map.get("basemap.title");

// equivalent of
let title = map.basemap && map.basemap.title || undefined;
参数
path String

要获取的属性的路径。

返回
类型 描述
* 属性的值。
hasHandles(groupKey){Boolean}
起始版本:GeoScene Maps SDK for JavaScript 4.25

如果存在指定的句柄组,则返回 true。

参数
groupKey *
optional

组键。

返回
类型 描述
Boolean 如果存在指定的句柄组,则返回 true
示例
// Remove a named group of handles if they exist.
if (obj.hasHandles("watch-view-updates")) {
  obj.removeHandles("watch-view-updates");
}
removeHandles(groupKey)
起始版本:GeoScene Maps SDK for JavaScript 4.25

移除对象拥有的句柄组。

参数
groupKey *
optional

要移除的组键或组键的数组或集合。

示例
obj.removeHandles(); // removes handles from default group

obj.removeHandles("handle-group");
obj.removeHandles("other-handle-group");
set(path, value){*}

设置属性的值。

使用属性名称和值调用 set(),以更改属性的值。

// setting the basemap of the map
map.set("basemap", "tianditu-vector");
// is equivalent to
map.basemap = "tianditu-vector";

// currying set
let updateViewScale = view.set.bind(view, "scale");
updateViewScale(5000);

set() 可使用属性和值的路径进行调用。如果路径中的属性不存在,则不会设置该属性。

// updating the title of the basemap
map.set("basemap.title", "World Topographic Map");

// is equivalent to
if (map.basemap != null) {
  map.basemap.title = "World Topographic Map";
}

可以将具有键值对的对象传递给 set() 以一次更新多个属性。

// setting a viewpoint on the view
view.set({
  center: [-4.4861, 48.3904],
  scale: 5000
});

// currying set
let updateView = view.set.bind(view);

updateView({
  center: [-4.4861, 48.3904],
  scale: 5000
});
参数

要设置的属性的路径,或键值对的对象。

value *

要在属性上设置的新值。

返回
类型 描述
* 实例。
watch(path, callback){WatchHandle}

监视实例上的属性更改。有关观察属性更改时的其他功能,请参阅 reactiveUtils

监视属性更改对于追踪对象的更改至关重要。要开始监视属性的更改,请使用属性名称和回调函数调用 watch(),该回调函数将在每次属性更改时执行。

let handle = mapview.watch("scale", function(newValue, oldValue, propertyName, target) {
  console.log(propertyName + " changed from " + oldValue + " to " + newValue);
});

要停止监视更改,请在 watch() 返回的对象上调用 remove() 方法。

handle.remove();

存储来自 watch() 的结果对象以正确清理引用非常重要。

let viewHandles = [];
function setView(view) {
  // remove the handles for the current view.
  viewHandles.forEach(function(handle) {
    handle.remove();
  });
  viewHandles.length = 0;

  this.view = view;

  // watch for properties on the newly set view.
  if (view) {
    viewHandles.push(
      view.watch("scale", scaleWatcher);
    );
  }
}

setView(mapView);
setView(null);

get()set() 一样,可以通过传递路径来观察对象层次结构深处的属性。如果路径中的属性不存在,则使用 undefined 调用监视回调。

let view = new SceneView({
  map: new Map({
    basemap: "tianditu-vector"
  })
});

view.watch("map.basemap.title", (newValue, oldValue) => {
  console.log("basemap's title changed from " + oldValue + " to " + newValue);
});

view.map.basemap = "tianditu-vector";
// output: "basemap's title changed from Streets to Topographic"

view.map = null;
// output: "basemap's title changed from Topographic to undefined"

传递以逗号分隔的属性路径列表或属性路径数组,以使用相同的回调监视多个属性。使用回调调用的第三个参数来确定更改了哪些属性。

view.watch("center, scale, rotation", (newValue, oldValue, propertyName) => {
  console.log(propertyName + " changed");
});

// equivalent of
view.watch(["center", "scale", "rotation"], (newValue, oldValue, propertyName) => {
  console.log(propertyName + " changed");
});

// equivalent of
let callback = (newValue, oldValue, propertyName) => {
  console.log(propertyName + " changed");
}
view.watch("center", callback);
view.watch("scale", callback);
view.watch("rotation", callback);

Accessor 属性值更改后,不会立即为属性调用监视回调。相反,当一个属性的值发生变化并且该属性被监视时,Accessor 会计划一个通知,然后在以后处理该通知。可以查看如 view.scale 这样频繁更改的属性,而无需限制回调。

// Divides the view.scale three times
view.watch("scale", (newValue, oldValue) => {
  console.log("view's scale changed from " + oldValue + " to " + newValue);
});
console.log("current view scale: " + view.scale);
view.scale = view.scale / 2;
view.scale = view.scale / 2;
view.scale = view.scale / 2;
console.log("current view scale: " + view.scale);

// output the following:
// current view scale: 36978595.474472
// current view scale: 4622324.434309
// view's scale changed from 36978595.474472 to 4622324.434309
参数

要监视的一个或多个属性。可以将多个属性指定为逗号分隔的列表。

callback watchCallback

属性值发生更改时,要执行的回调。

返回
类型 描述
WatchHandle 监视句柄。
另请参阅

类型定义

watchCallback(newValue, oldValue, propertyName, target)

当监视的属性发生更改时,调用的回调。

参数
newValue *

被监视属性的新值。

oldValue *

被监视属性的旧值。

propertyName String

属性名称。

target Accessor

包含被监视属性的对象。

WatchHandle Object

表示可以移除的监视或事件处理程序。

属性
remove Function

移除侦听句柄。

示例
let handle = reactiveUtils.watch(() => map.basemap, (newVal) => {
  // Each time the value of map.basemap changes, it is logged in the console
  console.log("new basemap: ", newVal);
});

// When remove() is called on the watch handle, the map no longer watches for changes to basemap
handle.remove();

您的浏览器不再受支持。请升级您的浏览器以获得最佳体验。请参阅浏览器弃用帖子以获取更多信息