LocateViewModel

AMD: require(["geoscene/widgets/Locate/LocateViewModel"], (LocateVM) => { /* 代码 */ });
ESM: import LocateVM from "@geoscene/core/widgets/Locate/LocateViewModel";
类: geoscene/widgets/Locate/LocateViewModel
继承于: LocateViewModel Accessor
起始版本: GeoScene API for JavaScript 4.22

提供“定位” 微件的逻辑,该微件将视图动画化到用户的当前位置。

不安全的源不支持(地理位置)功能。若要使用它,请将应用程序切换到安全源,如 HTTPS。请注意,localhost 被认为是“潜在安全的”,可用于在支持 Window.isSecureContext(目前为 Chrome 和 Firefox)的浏览器中轻松测试。

从版本 4.2 开始,定位按钮不再显示在不安全的 Web 应用程序中。在 4.1 版本中,这仅适用于谷歌浏览器。

另参阅:
示例代码:
let locateWidget = new Locate({
  viewModel: { // 转换成 new LocateViewModel()
    view: view   // 将“定位”按钮附加到视图
  },
  container: "locateDiv"
});

构造函数

new LocateViewModel(properties)
参数:
properties Object
optional

所有可传入构造函数的属性列表,请参见属性

属性列表

可以设置、检索或监听的任何属性。参见使用属性主题。
展示继承属性 隐藏继承属性
名称 类型 描述
String更多信息

类名。

更多信息Accessor
Object更多信息

用于定位的 HTML5 地理位置位置选项。

更多信息LocateViewModel
Boolean更多信息

指示是否将视图导航到地理位置结果的位置和比例。

更多信息LocateViewModel
GoToOverride更多信息

此函数提供了覆盖 MapView goTo() 或 SceneView goTo() 方法。

更多信息LocateViewModel
Graphic更多信息

用于在地图上显示用户位置的图形。

更多信息LocateViewModel
Boolean更多信息

指示是否显示 locate() 方法中的结果图形的弹出窗口

更多信息LocateViewModel
Number更多信息

导航到地理位置结果的位置时要在视图上设置的比例。

更多信息LocateViewModel
String更多信息

微件的当前状态。

更多信息LocateViewModel
MapView|SceneView更多信息

与微件关联的视图。

更多信息LocateViewModel

属性详细说明

declaredClass Stringreadonly inherited
起始版本: GeoScene API for JavaScript 4.22

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

geolocationOptions Object

用于定位的 HTML5 地理位置位置选项。有关详细信息,请参阅地理位置 API 规范

默认值:{ maximumAge: 0, timeout: 15000, enableHighAccuracy: true }
goToLocationEnabled Boolean

指示是否将视图导航到地理位置结果的位置和比例。

默认值:true
goToOverride GoToOverride
起始版本: GeoScene API for JavaScript 4.22

此函数提供了覆盖 MapView goTo() 或 SceneView goTo() 方法。

另参阅:
示例代码:
// 下面的代码片段使用搜索微件,
// 但可以应用于支持 goToOverride 属性的任何微件。
search.goToOverride = function(view, goToParams) {
  goToParams.options.duration = updatedDuration;
  return view.goTo(goToParams.target, goToParams.options);
};
graphic Graphic

用于在地图上显示用户位置的图形。

示例代码:
let locateWidget = new Locate({
  viewModel: { // 转换成 new LocateViewModel()
    view: view,  // 将定位微件分配给视图
    graphic: new Graphic({
      symbol: { type: "simple-marker" }  // 在发现时在用户位置
      // 的图形重写默认符号
    })
  }
});
popupEnabled Boolean
起始版本: GeoScene API for JavaScript 4.22

指示是否显示 locate() 方法中的结果图形的弹出窗口

默认值:true
另参阅:
scale Number
起始版本: GeoScene API for JavaScript 4.22

导航到地理位置结果的位置时要在视图上设置的比例。如果未显式设置比例值,则视图将导航到 2500 的默认比例。

默认值:null
state Stringreadonly

微件的当前状态。

可选值:"disabled"|"ready"|"locating"

默认值:disabled

与微件关联的视图。

方法列表

名称 返回值类型 描述
更多信息

此函数提供了中断和取消以编程方式获取用户设备位置的过程的功能。

更多信息LocateViewModel
Boolean更多信息

在实例上触发事件。

更多信息LocateViewModel
Boolean更多信息

指示实例上是否存在与提供的事件名称匹配的事件侦听器。

更多信息LocateViewModel
Promise<Object>更多信息

将视图动画化到用户的位置。

更多信息LocateViewModel
Object更多信息

在实例上注册事件处理程序。

更多信息LocateViewModel

方法详细说明

cancelLocate()
起始版本: GeoScene API for JavaScript 4.22

此函数提供了中断和取消以编程方式获取用户设备位置的过程的功能。

emit(type, event){Boolean}
起始版本: GeoScene API for JavaScript 4.22

在实例上触发事件。仅当创建此类的子类时才应使用此方法。

参数:
type String

事件名称。

event Object
optional

事件负载。

返回值:
类型 描述
Boolean 如果侦听器收到通知,则为true 
hasEventListener(type){Boolean}

指示实例上是否存在与提供的事件名称匹配的事件侦听器。

参数:
type String

事件名称。

返回值:
类型 描述
Boolean 如果类支持输入事件,则返回 true。
locate(){Promise<Object>}

将视图动画化到用户的位置。

返回值:
类型 描述
Promise<Object> 解析为与定位事件中定义的事件对象具有相同规范的对象。
示例代码:
let locateWidget = new Locate({
  viewModel: { // 转换成 new LocateViewModel()
    view: view
  },
  container: "locateDiv"
});

locateWidget.locate().then(function(){
  // 在找到用户位置后触发
});
on(type, listener){Object}

在实例上注册事件处理程序。调用此方法将事件与侦听器挂钩。

参数:

要监听的事件或者事件数组。

listener Function

事件触发时要调用的函数。

返回值:
类型 描述
Object 返回一个 remove() 方法的事件处理程序,该方法用以停止侦听事件。
属性 类型 描述
remove Function 当被调用时,从事件中移除监听器。
示例代码:
view.on("click", function(event){
  // event是事件触发后返回的事件句柄。
  console.log(event.mapPoint);
});

Event Overview

名称 类型 描述
{error: Error}
更多信息

在调用 locate() 方法后触发并失败。

更多信息 LocateViewModel

Event Details

locate-error

在调用 locate() 方法后触发并失败。

Property:
error Error

定位时出现的错误对象。

另参阅:

Your browser is no longer supported. Please upgrade your browser for the best experience. See our browser deprecation post for more details.