Merge remote-tracking branch 'upstream/master'

This commit is contained in:
Bryan Krol
2019-03-28 15:24:28 -04:00
2585 changed files with 69439 additions and 11672 deletions

259
.github/CODEOWNERS vendored

File diff suppressed because it is too large Load Diff

View File

@@ -332,5 +332,3 @@ Es más apropiado importar este módulo utilizando la sintaxis `import foo = req
Este proyecto es licenciado bajo la licencia MIT.
Los derechos de autor de cada archivo de definición son respectivos de cada contribuidor listado al comienzo de cada archivo de definición.
[![Analytics](https://ga-beacon.appspot.com/UA-47495295-4/borisyankov/DefinitelyTyped)](https://github.com/igrigorik/ga-beacon)

View File

@@ -334,5 +334,3 @@ NPM 패키지의 경우, `node -p 'require("foo")'` 가 원하는 값이라면 `
이 프로젝트는 MIT license 가 적용되어 있습니다.
각 자료형 정의(Type definition) 파일들의 저작권은 각 기여자들에게 있으며, 기여자들은 해당 자료형 정의(Type definition) 파일들의 맨 위에 나열되어 있습니다.
[![Analytics](https://ga-beacon.appspot.com/UA-47495295-4/borisyankov/DefinitelyTyped)](https://github.com/igrigorik/ga-beacon)

View File

@@ -57,7 +57,7 @@ You may need to add manual [references](http://www.typescriptlang.org/docs/handb
## How can I contribute?
DefinitelyTyped only works because of contributions by users like you!
Definitely Typed only works because of contributions by users like you!
### Test
@@ -89,7 +89,7 @@ then follow the instructions to [edit an existing package](#edit-an-existing-pac
### Make a pull request
Once you've tested your package, you can share it on DefinitelyTyped.
Once you've tested your package, you can share it on Definitely Typed.
First, [fork](https://guides.github.com/activities/forking/) this repository, install [node](https://nodejs.org/), and run `npm install`.
@@ -117,7 +117,7 @@ If it doesn't, you can do so yourself in the comment associated with the PR.
#### Create a new package
If you are the library author and your package is written in TypeScript, [bundle the autogenerated declaration files](http://www.typescriptlang.org/docs/handbook/declaration-files/publishing.html) in your package instead of publishing to DefinitelyTyped.
If you are the library author and your package is written in TypeScript, [bundle the autogenerated declaration files](http://www.typescriptlang.org/docs/handbook/declaration-files/publishing.html) in your package instead of publishing to Definitely Typed.
If you are adding typings for an NPM package, create a directory with the same name.
If the package you are adding typings for is not on NPM, make sure the name you choose for it does not conflict with the name of a package on NPM.
@@ -137,7 +137,7 @@ See all options at [dts-gen](https://github.com/Microsoft/dts-gen).
You may edit the `tsconfig.json` to add new files, to add `"target": "es6"` (needed for async functions), to add to `"lib"`, or to add the `"jsx"` compiler option.
DefinitelyTyped members routinely monitor for new PRs, though keep in mind that the number of other PRs may slow things down.
Definitely Typed members routinely monitor for new PRs, though keep in mind that the number of other PRs may slow things down.
For a good example package, see [base64-js](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/base64-js).
@@ -165,18 +165,31 @@ For a good example package, see [base64-js](https://github.com/DefinitelyTyped/D
#### Removing a package
When a package [bundles](http://www.typescriptlang.org/docs/handbook/declaration-files/publishing.html) its own types, types should be removed from DefinitelyTyped to avoid confusion.
When a package [bundles](http://www.typescriptlang.org/docs/handbook/declaration-files/publishing.html) its own types, types should be removed from Definitely Typed to avoid confusion.
You can remove it by running `npm run not-needed -- typingsPackageName asOfVersion sourceRepoURL [libraryName]`.
- `typingsPackageName`: This is the name of the directory to delete.
- `asOfVersion`: A stub will be published to `@types/foo` with this version. Should be higher than any currently published version.
- `sourceRepoURL`: This should point to the repository that contains the typings.
- `libraryName`: Descriptive name of the library, e.g. "Angular 2" instead of "angular2". (If ommitted, will be identical to "typingsPackageName".)
- `libraryName`: Name of npm package that replaces the Definitely Typed types. Usually this is identical to "typingsPackageName", in which case you can omit it.
Any other packages in DefinitelyTyped that referenced the deleted package should be updated to reference the bundled types. To do this, add a `package.json` with `"dependencies": { "foo": "x.y.z" }`.
Any other packages in Definitely Typed that referenced the deleted package should be updated to reference the bundled types.
You can get this list by looking at the errors from `npm run test`.
To fix the errors, add a `package.json` with `"dependencies": { "foo": "x.y.z" }`.
For example:
If a package was never on DefinitelyTyped, it does not need to be added to `notNeededPackages.json`.
```json
{
"private": true,
"dependencies": {
"foo": "^2.6.0"
}
}
```
When you add a `package.json` to dependents of `foo`, you will also need to open a PR to add `foo` [to dependenciesWhitelist.txt in types-publisher](https://github.com/Microsoft/types-publisher/blob/master/dependenciesWhitelist.txt).
If a package was never on Definitely Typed, it does not need to be added to `notNeededPackages.json`.
#### Lint
@@ -225,11 +238,11 @@ The `master` branch is automatically published to the `@types` scope on NPM than
#### I've submitted a pull request. How long until it is merged?
It depends, but most pull requests will be merged within a week. PRs that have been approved by an author listed in the definition's header are usually merged more quickly; PRs for new definitions will take more time as they require more review from maintainers. Each PR is reviewed by a TypeScript or DefinitelyTyped team member before being merged, so please be patient as human factors may cause delays. Check the [PR Burndown Board](https://github.com/DefinitelyTyped/DefinitelyTyped/projects/3?card_filter_query=is%3Aopen) to see progress as maintainers work through the open PRs.
It depends, but most pull requests will be merged within a week. PRs that have been approved by an author listed in the definition's header are usually merged more quickly; PRs for new definitions will take more time as they require more review from maintainers. Each PR is reviewed by a TypeScript or Definitely Typed team member before being merged, so please be patient as human factors may cause delays. Check the [PR Burndown Board](https://github.com/DefinitelyTyped/DefinitelyTyped/projects/3?card_filter_query=is%3Aopen) to see progress as maintainers work through the open PRs.
#### My PR is merged; when will the `@types` NPM package be updated?
NPM packages should update within a few minutes. If it's been more than an hour, mention the PR number on [the DefinitelyTyped Gitter channel](https://gitter.im/DefinitelyTyped/DefinitelyTyped) and the current maintainer will get the correct team member to investigate.
NPM packages should update within a few minutes. If it's been more than an hour, mention the PR number on [the Definitely Typed Gitter channel](https://gitter.im/DefinitelyTyped/DefinitelyTyped) and the current maintainer will get the correct team member to investigate.
#### I'm writing a definition that depends on another definition. Should I use `<reference types="" />` or an import?
@@ -325,13 +338,13 @@ You can look [here](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/mast
This may belong in [TSJS-Lib-Generator](https://github.com/Microsoft/TSJS-lib-generator#readme). See the guidelines there.
If the standard is still a draft, it belongs here.
Use a name beginning with `dom-` and include a link to the standard as the "Project" link in the header.
When it graduates draft mode, we may remove it from DefinitelyTyped and deprecate the associated `@types` package.
When it graduates draft mode, we may remove it from Definitely Typed and deprecate the associated `@types` package.
#### How do DefinitelyTyped package versions relate to versions of the corresponding library?
#### How do Definitely Typed package versions relate to versions of the corresponding library?
_NOTE: The discussion in this section assumes familiarity with [Semantic versioning](https://semver.org/)_
Each DefinitelyTyped package is versioned when published to NPM.
Each Definitely Typed package is versioned when published to NPM.
The [types-publisher](https://github.com/Microsoft/types-publisher) (the tool that publishes `@types` packages to npm) will set the declaration package's version by using the `major.minor` version number listed in the first line of its `index.d.ts` file.
For example, here are the first few lines of [Node's type declarations](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/1253faabf5e0d2c5470db6ea87795d7f96fef7e2/types/node/index.d.ts) for version `10.12.x` at the time of writing:
@@ -339,24 +352,24 @@ For example, here are the first few lines of [Node's type declarations](https://
// Type definitions for Node.js 10.12
// Project: http://nodejs.org/
// Definitions by: Microsoft TypeScript <https://github.com/Microsoft>
// DefinitelyTyped <https://github.com/DefinitelyTyped>
// Definitely Typed <https://github.com/DefinitelyTyped>
// Alberto Schiabel <https://github.com/jkomyno>
```
Because `10.12` is at the end the first line, the npm version of the `@types/node` package will also be `10.12.x`.
Note that the first-line comment in the `index.d.ts` file should only contain the `major.minor` version (e.g. `10.12`) and should not contain a patch version (e.g. `10.12.4`).
This is because only the major and minor release numbers are aligned between library packages and type declaration packages.
The patch release number of the type declaration package (e.g. `.0` in `10.12.0`) is initialized to zero by DefinitelyTyped and is incremented each time a new `@types/node` package is published to NPM for the same major/minor version of the corresponding library.
The patch release number of the type declaration package (e.g. `.0` in `10.12.0`) is initialized to zero by Definitely Typed and is incremented each time a new `@types/node` package is published to NPM for the same major/minor version of the corresponding library.
Sometimes type declaration package versions and library package versions can get out of sync.
Below are a few common reasons why, in order of how much they inconvenience users of a library.
Only the last case is typically problematic.
* As noted above, the patch version of the type declaration package is unrelated to the library patch version.
This allows DefinitelyTyped to safely update type declarations for the same major/minor version of a library.
This allows Definitely Typed to safely update type declarations for the same major/minor version of a library.
* If updating a package for new functionality, don't forget to update the version number to line up with that version of the library.
If users make sure versions correspond between JavaScript packages and their respective `@types` packages, then `npm update` should typically just work.
* It's common for type declaration package updates to lag behind library updates because it's often library users, not maintainers, who update DefinitelyTyped when new library features are released.
* It's common for type declaration package updates to lag behind library updates because it's often library users, not maintainers, who update Definitely Typed when new library features are released.
So there may be a lag of days, weeks, or even months before a helpful community member sends a PR to update the type declaration package for a new library release.
If you're impacted by this, you can be the change you want to see in the world and you can be that helpful community member!
@@ -366,7 +379,7 @@ Only the last case is typically problematic.
[Semantic versioning](https://semver.org/) requires that versions with breaking changes must increment the major version number.
For example, a library that removes a publicly exported function after its `3.5.8` release must bump its version to `4.0.0` in its next release.
Furthermore, when the library's `4.0.0` release is out, its DefinitelyTyped type declaration package should also be updated to `4.0.0`, including any breaking changes to the library's API.
Furthermore, when the library's `4.0.0` release is out, its Definitely Typed type declaration package should also be updated to `4.0.0`, including any breaking changes to the library's API.
Many libraries have a large installed base of developers (including maintainers of other packages using that library as a dependency) who won't move right away to a new version that has breaking changes, because it might be months until a maintainer has time to rewrite code to adapt to the new version.
In the meantime, users of old library versions still may want to update type declarations for older versions.
@@ -398,7 +411,7 @@ At the time of writing, the [history v2 `tsconfig.json`](https://github.com/Defi
}
```
If there are other packages in DefinitelyTyped that are incompatible with the new version, you will need to add path mappings to the old version.
If there are other packages in Definitely Typed that are incompatible with the new version, you will need to add path mappings to the old version.
You will also need to do this recursively for packages depending on packages depending on the old version.
For example, `react-router` depends on `history@2`, so [react-router `tsconfig.json`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/react-router/v2/tsconfig.json) has a path mapping to `"history": [ "history/v2" ]`.
@@ -439,5 +452,3 @@ GitHub doesn't [support](http://stackoverflow.com/questions/5646174/how-to-make-
This project is licensed under the MIT license.
Copyrights on the definition files are respective of each contributor listed at the beginning of each definition file.
[![Analytics](https://ga-beacon.appspot.com/UA-47495295-4/borisyankov/DefinitelyTyped)](https://github.com/igrigorik/ga-beacon)

View File

@@ -346,8 +346,6 @@ GitHub не [поддерживает](http://stackoverflow.com/questions/564617
Авторские права на файлы определений принадлежат каждому участнику, указанному в начале каждого файла определения.
[![Analytics](https://ga-beacon.appspot.com/UA-47495295-4/borisyankov/DefinitelyTyped)](https://github.com/igrigorik/ga-beacon)
[![Build Status](https://typescript.visualstudio.com/TypeScript/_apis/build/status/sandersn.types-publisher-watchdog)](https://typescript.visualstudio.com/TypeScript/_build/latest?definitionId=13) В среднем пакеты публикуются на npm менее чем за 10000 секунд?
[![Build Status](https://typescript.visualstudio.com/TypeScript/_apis/build/status/sandersn.typescript-bot-watchdog)](https://typescript.visualstudio.com/TypeScript/_build/latest?definitionId=14) Был ли typescript-bot активным на DefinitelyTyped в последние два часа?

24
azure-pipelines.yml Normal file
View File

@@ -0,0 +1,24 @@
# Starter pipeline
# Start with a minimal pipeline that you can customize to build and deploy your code.
# Add steps that build, run tests, deploy, and more:
# https://aka.ms/yaml
jobs:
- job: npmRunTest
pool:
vmImage: 'Ubuntu 16.04'
demands: npm
timeoutInMinutes: 360
steps:
- task: Npm@1
displayName: 'npm install'
inputs:
verbose: false
- script: 'git checkout -- . && npm run test'
displayName: 'npm run test'
trigger:
- master

View File

@@ -18,6 +18,12 @@
"sourceRepoURL": "https://github.com/ceolter/ag-grid",
"asOfVersion": "3.2.0"
},
{
"libraryName": "aggregate-error",
"typingsPackageName": "aggregate-error",
"sourceRepoURL": "https://github.com/sindresorhus/aggregate-error",
"asOfVersion": "2.2.0"
},
{
"libraryName": "ajv",
"typingsPackageName": "ajv",
@@ -270,6 +276,12 @@
"sourceRepoURL": "https://github.com/saltyrtc/chunked-dc-js",
"asOfVersion": "0.2.2"
},
{
"libraryName": "clean-webpack-plugin",
"typingsPackageName": "clean-webpack-plugin",
"sourceRepoURL": "https://github.com/johnagan/clean-webpack-plugin",
"asOfVersion": "2.0.0"
},
{
"libraryName": "colors.js (colors)",
"typingsPackageName": "colors",
@@ -462,6 +474,12 @@
"sourceRepoURL": "https://github.com/MikeMcl/decimal.js",
"asOfVersion": "7.4.0"
},
{
"libraryName": "decompress-response",
"typingsPackageName": "decompress-response",
"sourceRepoURL": "https://github.com/sindresorhus/decompress-response",
"asOfVersion": "4.1.0"
},
{
"libraryName": "deepmerge",
"typingsPackageName": "deepmerge",
@@ -504,6 +522,12 @@
"sourceRepoURL": "https://github.com/joyent/docker-file-parser",
"asOfVersion": "1.0.3"
},
{
"libraryName": "dom-loaded",
"typingsPackageName": "dom-loaded",
"sourceRepoURL": "https://github.com/sindresorhus/dom-loaded",
"asOfVersion": "1.1.0"
},
{
"libraryName": "dot-case",
"typingsPackageName": "dot-case",
@@ -558,6 +582,12 @@
"sourceRepoURL": "https://github.com/loopline-systems/electron-builder",
"asOfVersion": "2.8.0"
},
{
"libraryName": "element-ready",
"typingsPackageName": "element-ready",
"sourceRepoURL": "https://github.com/sindresorhus/element-ready",
"asOfVersion": "3.1.0"
},
{
"libraryName": "email-addresses",
"typingsPackageName": "email-addresses",
@@ -678,6 +708,18 @@
"sourceRepoURL": "https://github.com/sindresorhus/file-type",
"asOfVersion": "10.9.1"
},
{
"libraryName": "filenamify",
"typingsPackageName": "filenamify",
"sourceRepoURL": "https://github.com/sindresorhus/filenamify",
"asOfVersion": "3.0.0"
},
{
"libraryName": "filenamify-url",
"typingsPackageName": "filenamify-url",
"sourceRepoURL": "https://github.com/sindresorhus/filenamify-url",
"asOfVersion": "2.0.0"
},
{
"libraryName": "FineUploader",
"typingsPackageName": "fine-uploader",
@@ -690,6 +732,12 @@
"sourceRepoURL": "https://www.firebase.com/docs/javascript/firebase",
"asOfVersion": "3.2.1"
},
{
"libraryName": "fkill",
"typingsPackageName": "fkill",
"sourceRepoURL": "https://github.com/sindresorhus/fkill",
"asOfVersion": "6.0.0"
},
{
"libraryName": "flatpickr",
"typingsPackageName": "flatpickr",
@@ -738,6 +786,18 @@
"sourceRepoURL": "https://github.com/manuelbieh/Geolib",
"asOfVersion": "2.0.23"
},
{
"libraryName": "get-port",
"typingsPackageName": "get-port",
"sourceRepoURL": "https://github.com/sindresorhus/get-port",
"asOfVersion": "4.2.0"
},
{
"libraryName": "get-stream",
"typingsPackageName": "get-stream",
"sourceRepoURL": "https://github.com/sindresorhus/get-stream",
"asOfVersion": "5.0.0"
},
{
"libraryName": "github",
"typingsPackageName": "github",
@@ -804,6 +864,18 @@
"sourceRepoURL": "https://handsontable.com/",
"asOfVersion": "0.35.0"
},
{
"libraryName": "has-yarn",
"typingsPackageName": "has-yarn",
"sourceRepoURL": "https://github.com/sindresorhus/has-yarn",
"asOfVersion": "2.0.0"
},
{
"libraryName": "hasha",
"typingsPackageName": "hasha",
"sourceRepoURL": "https://github.com/sindresorhus/hasha",
"asOfVersion": "4.0.0"
},
{
"libraryName": "hibp",
"typingsPackageName": "hibp",
@@ -882,6 +954,12 @@
"sourceRepoURL": "https://github.com/sindresorhus/internal-ip",
"asOfVersion": "4.1.0"
},
{
"libraryName": "into-stream",
"typingsPackageName": "into-stream",
"sourceRepoURL": "https://github.com/sindresorhus/into-stream",
"asOfVersion": "5.0.0"
},
{
"libraryName": "inversify",
"typingsPackageName": "inversify",
@@ -942,6 +1020,12 @@
"sourceRepoURL": "https://github.com/jonschlinkert/is-plain-object",
"asOfVersion": "2.0.4"
},
{
"libraryName": "is-scoped",
"typingsPackageName": "is-scoped",
"sourceRepoURL": "https://github.com/sindresorhus/is-scoped",
"asOfVersion": "2.0.0"
},
{
"libraryName": "is-svg",
"typingsPackageName": "is-svg",
@@ -1026,6 +1110,12 @@
"sourceRepoURL": "https://github.com/keycloak/keycloak",
"asOfVersion": "3.4.1"
},
{
"libraryName": "knex",
"typingsPackageName": "knex",
"sourceRepoURL": "https://github.com/tgriesser/knex",
"asOfVersion": "0.16.1"
},
{
"libraryName": "knockout-paging",
"typingsPackageName": "knockout-paging",
@@ -1050,6 +1140,12 @@
"sourceRepoURL": "https://github.com/elitechance/lambda-phi",
"asOfVersion": "1.0.1"
},
{
"libraryName": "latest-version",
"typingsPackageName": "latest-version",
"sourceRepoURL": "https://github.com/sindresorhus/latest-version",
"asOfVersion": "5.0.0"
},
{
"libraryName": "ldclient-js",
"typingsPackageName": "ldclient-js",
@@ -1062,6 +1158,12 @@
"sourceRepoURL": "https://github.com/stevemao/left-pad",
"asOfVersion": "1.2.0"
},
{
"libraryName": "leven",
"typingsPackageName": "leven",
"sourceRepoURL": "https://github.com/sindresorhus/leven",
"asOfVersion": "3.0.0"
},
{
"libraryName": "Linq.JS",
"typingsPackageName": "linq",
@@ -1152,6 +1254,12 @@
"sourceRepoURL": "https://github.com/runk/node-maxmind",
"asOfVersion": "2.0.5"
},
{
"libraryName": "mem",
"typingsPackageName": "mem",
"sourceRepoURL": "https://github.com/sindresorhus/mem",
"asOfVersion": "4.2.0"
},
{
"libraryName": "mendixmodelsdk",
"typingsPackageName": "mendixmodelsdk",
@@ -1254,6 +1362,18 @@
"sourceRepoURL": "https://github.com/paularmstrong/normalizr",
"asOfVersion": "2.0.18"
},
{
"libraryName": "npm-email",
"typingsPackageName": "npm-email",
"sourceRepoURL": "https://github.com/sindresorhus/npm-email",
"asOfVersion": "3.1.0"
},
{
"libraryName": "npm-keyword",
"typingsPackageName": "npm-keyword",
"sourceRepoURL": "https://github.com/sindresorhus/npm-keyword",
"asOfVersion": "6.0.0"
},
{
"libraryName": "npm-name",
"typingsPackageName": "npm-name",
@@ -1266,6 +1386,12 @@
"sourceRepoURL": "https://github.com/sindresorhus/npm-run-path",
"asOfVersion": "3.0.1"
},
{
"libraryName": "npm-user",
"typingsPackageName": "npm-user",
"sourceRepoURL": "https://github.com/sindresorhus/npm-user",
"asOfVersion": "4.0.0"
},
{
"libraryName": "Nuka Carousel",
"typingsPackageName": "nuka-carousel",
@@ -1290,54 +1416,174 @@
"sourceRepoURL": "http://onsen.io",
"asOfVersion": "2.0.0"
},
{
"libraryName": "opn",
"typingsPackageName": "opn",
"sourceRepoURL": "https://github.com/sindresorhus/opn",
"asOfVersion": "5.5.0"
},
{
"libraryName": "ora",
"typingsPackageName": "ora",
"sourceRepoURL": "https://github.com/sindresorhus/ora",
"asOfVersion": "3.2.0"
},
{
"libraryName": "p-any",
"typingsPackageName": "p-any",
"sourceRepoURL": "https://github.com/sindresorhus/p-any",
"asOfVersion": "2.0.0"
},
{
"libraryName": "p-cancelable",
"typingsPackageName": "p-cancelable",
"sourceRepoURL": "https://github.com/sindresorhus/p-cancelable",
"asOfVersion": "1.1.0"
},
{
"libraryName": "p-catch-if",
"typingsPackageName": "p-catch-if",
"sourceRepoURL": "https://github.com/sindresorhus/p-catch-if",
"asOfVersion": "2.0.0"
},
{
"libraryName": "p-debounce",
"typingsPackageName": "p-debounce",
"sourceRepoURL": "https://github.com/sindresorhus/p-debounce",
"asOfVersion": "2.0.0"
},
{
"libraryName": "p-each-series",
"typingsPackageName": "p-each-series",
"sourceRepoURL": "https://github.com/sindresorhus/p-each-series",
"asOfVersion": "2.0.0"
},
{
"libraryName": "p-event",
"typingsPackageName": "p-event",
"sourceRepoURL": "https://github.com/sindresorhus/p-event",
"asOfVersion": "3.0.0"
},
{
"libraryName": "p-every",
"typingsPackageName": "p-every",
"sourceRepoURL": "https://github.com/kevva/p-every",
"asOfVersion": "2.0.0"
},
{
"libraryName": "p-limit",
"typingsPackageName": "p-limit",
"sourceRepoURL": "https://github.com/sindresorhus/p-limit",
"asOfVersion": "2.2.0"
},
{
"libraryName": "p-locate",
"typingsPackageName": "p-locate",
"sourceRepoURL": "https://github.com/sindresorhus/p-locate",
"asOfVersion": "4.0.0"
},
{
"libraryName": "p-log",
"typingsPackageName": "p-log",
"sourceRepoURL": "https://github.com/sindresorhus/p-log",
"asOfVersion": "2.0.0"
},
{
"libraryName": "p-map",
"typingsPackageName": "p-map",
"sourceRepoURL": "https://github.com/sindresorhus/p-map",
"asOfVersion": "2.0.0"
},
{
"libraryName": "p-map-series",
"typingsPackageName": "p-map-series",
"sourceRepoURL": "https://github.com/sindresorhus/p-map-series",
"asOfVersion": "2.0.0"
},
{
"libraryName": "p-memoize",
"typingsPackageName": "p-memoize",
"sourceRepoURL": "https://github.com/sindresorhus/p-memoize",
"asOfVersion": "3.0.0"
},
{
"libraryName": "p-one",
"typingsPackageName": "p-one",
"sourceRepoURL": "https://github.com/kevva/p-one",
"asOfVersion": "2.0.0"
},
{
"libraryName": "p-pipe",
"typingsPackageName": "p-pipe",
"sourceRepoURL": "https://github.com/sindresorhus/p-pipe",
"asOfVersion": "2.0.1"
},
{
"libraryName": "p-progress",
"typingsPackageName": "p-progress",
"sourceRepoURL": "https://github.com/sindresorhus/p-progress",
"asOfVersion": "0.3.0"
},
{
"libraryName": "p-props",
"typingsPackageName": "p-props",
"sourceRepoURL": "https://github.com/sindresorhus/p-props",
"asOfVersion": "2.0.0"
},
{
"libraryName": "p-queue",
"typingsPackageName": "p-queue",
"sourceRepoURL": "https://github.com/sindresorhus/p-queue",
"asOfVersion": "3.2.1"
},
{
"libraryName": "p-reduce",
"typingsPackageName": "p-reduce",
"sourceRepoURL": "https://github.com/sindresorhus/p-reduce",
"asOfVersion": "2.0.0"
},
{
"libraryName": "p-retry",
"typingsPackageName": "p-retry",
"sourceRepoURL": "https://github.com/sindresorhus/p-retry",
"asOfVersion": "4.0.0"
},
{
"libraryName": "p-series",
"typingsPackageName": "p-series",
"sourceRepoURL": "https://github.com/sindresorhus/p-series",
"asOfVersion": "2.0.0"
},
{
"libraryName": "p-some",
"typingsPackageName": "p-some",
"sourceRepoURL": "https://github.com/sindresorhus/p-some",
"asOfVersion": "4.0.1"
},
{
"libraryName": "p-tap",
"typingsPackageName": "p-tap",
"sourceRepoURL": "https://github.com/sindresorhus/p-tap",
"asOfVersion": "2.0.0"
},
{
"libraryName": "p-throttle",
"typingsPackageName": "p-throttle",
"sourceRepoURL": "https://github.com/sindresorhus/p-throttle",
"asOfVersion": "2.1.0"
},
{
"libraryName": "p-timeout",
"typingsPackageName": "p-timeout",
"sourceRepoURL": "https://github.com/sindresorhus/p-timeout",
"asOfVersion": "3.0.0"
},
{
"libraryName": "package-json",
"typingsPackageName": "package-json",
"sourceRepoURL": "https://github.com/sindresorhus/package-json",
"asOfVersion": "6.1.0"
},
{
"libraryName": "param-case",
"typingsPackageName": "param-case",
@@ -1374,6 +1620,12 @@
"sourceRepoURL": "https://github.com/pillarjs/path-to-regexp",
"asOfVersion": "1.7.0"
},
{
"libraryName": "path-type",
"typingsPackageName": "path-type",
"sourceRepoURL": "https://github.com/sindresorhus/path-type",
"asOfVersion": "4.0.0"
},
{
"libraryName": "perfect-scrollbar",
"typingsPackageName": "perfect-scrollbar",
@@ -1416,6 +1668,18 @@
"sourceRepoURL": "https://github.com/sindresorhus/pkg-conf",
"asOfVersion": "3.0.0"
},
{
"libraryName": "pkg-dir",
"typingsPackageName": "pkg-dir",
"sourceRepoURL": "https://github.com/sindresorhus/pkg-dir",
"asOfVersion": "4.0.0"
},
{
"libraryName": "pkg-versions",
"typingsPackageName": "pkg-versions",
"sourceRepoURL": "https://github.com/sindresorhus/pkg-versions",
"asOfVersion": "2.0.0"
},
{
"libraryName": "plottable",
"typingsPackageName": "plottable",
@@ -1758,6 +2022,12 @@
"sourceRepoURL": "https://github.com/Lellansin/node-scanf",
"asOfVersion": "0.7.3"
},
{
"libraryName": "screenfull",
"typingsPackageName": "screenfull",
"sourceRepoURL": "https://github.com/sindresorhus/screenfull.js",
"asOfVersion": "4.1.0"
},
{
"libraryName": "sendgrid",
"typingsPackageName": "sendgrid",
@@ -1794,6 +2064,12 @@
"sourceRepoURL": "https://github.com/zeh/simplesignal",
"asOfVersion": "1.0.0"
},
{
"libraryName": "@sindresorhus/df",
"typingsPackageName": "sindresorhus__df",
"sourceRepoURL": "https://github.com/sindresorhus/df",
"asOfVersion": "3.0.0"
},
{
"libraryName": "@sindresorhus/slugify",
"typingsPackageName": "sindresorhus__slugify",
@@ -1998,6 +2274,12 @@
"sourceRepoURL": "https://github.com/kriasoft/universal-router",
"asOfVersion": "8.0.0"
},
{
"libraryName": "unused-filename",
"typingsPackageName": "unused-filename",
"sourceRepoURL": "https://github.com/sindresorhus/unused-filename",
"asOfVersion": "2.0.0"
},
{
"libraryName": "upper-case",
"typingsPackageName": "upper-case",
@@ -2058,6 +2340,12 @@
"sourceRepoURL": "https://github.com/sindresorhus/wait-for-localhost",
"asOfVersion": "3.1.0"
},
{
"libraryName": "wallpaper",
"typingsPackageName": "wallpaper",
"sourceRepoURL": "https://github.com/sindresorhus/wallpaper",
"asOfVersion": "4.3.0"
},
{
"libraryName": "webcola",
"typingsPackageName": "webcola",

View File

@@ -8,6 +8,7 @@
"callable-types": false,
"comment-format": false,
"dt-header": false,
"npm-naming": false,
"eofline": false,
"export-just-namespace": false,
"import-spacing": false,

View File

@@ -8,6 +8,7 @@
"callable-types": false,
"comment-format": false,
"dt-header": false,
"npm-naming": false,
"eofline": false,
"export-just-namespace": false,
"import-spacing": false,

View File

@@ -8,6 +8,7 @@
"callable-types": false,
"comment-format": false,
"dt-header": false,
"npm-naming": false,
"eofline": false,
"export-just-namespace": false,
"import-spacing": false,

View File

@@ -8,6 +8,7 @@
"callable-types": false,
"comment-format": false,
"dt-header": false,
"npm-naming": false,
"eofline": false,
"export-just-namespace": false,
"import-spacing": false,

View File

@@ -13,7 +13,7 @@ export class DirectUpload {
file: File;
url: string;
constructor(file: File, url: string, delegate: DirectUploadDelegate)
constructor(file: File, url: string, delegate?: DirectUploadDelegate)
create(callback: (error: Error, blob: Blob) => void): void;
}

View File

@@ -8,6 +8,7 @@
"callable-types": false,
"comment-format": false,
"dt-header": false,
"npm-naming": false,
"eofline": false,
"export-just-namespace": false,
"import-spacing": false,

View File

@@ -8,6 +8,7 @@
"callable-types": false,
"comment-format": false,
"dt-header": false,
"npm-naming": false,
"eofline": false,
"export-just-namespace": false,
"import-spacing": false,

View File

@@ -1,9 +0,0 @@
import AggregateError = require('aggregate-error');
const err = new AggregateError([new Error('foo'), 'bar']);
for (const el of Array.from(err)) {
const err: Error = el;
}
throw err;

View File

@@ -1,12 +0,0 @@
// Type definitions for aggregate-error 1.0
// Project: https://github.com/sindresorhus/aggregate-error#readme
// Definitions by: BendingBender <https://github.com/BendingBender>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
export = AggregateError;
declare class AggregateError extends Error implements Iterable<Error> {
constructor(errors: Iterable<Error | string>);
[Symbol.iterator](): Iterator<Error>;
}

View File

@@ -0,0 +1,43 @@
import * as Airtable from 'airtable';
interface Row extends Airtable.FieldSet {
field1: string;
attachments: Airtable.Attachment[];
}
const airtable = new Airtable();
const base = airtable.base('app id');
const table = base('table name') as Airtable.Table<Row>;
async () => {
const query = table.select();
{
const rows = await query.all();
for (const row of rows) {
row.id; // $ExpectType string
row.fields.field1; // $ExpectType string
for (const attachment of row.fields.attachments) {
attachment.id; // $ExpectType string
attachment.filename; // $ExpectType string
attachment.size; // $ExpectType number
attachment.type; // $ExpectType string
attachment.url; // $ExpectType string
if (attachment.thumbnails) {
attachment.thumbnails.full.height; // $ExpectType number
attachment.thumbnails.full.width; // $ExpectType number
attachment.thumbnails.full.url; // $ExpectType string
attachment.thumbnails.large.height; // $ExpectType number
attachment.thumbnails.large.width; // $ExpectType number
attachment.thumbnails.large.url; // $ExpectType string
attachment.thumbnails.small.height; // $ExpectType number
attachment.thumbnails.small.width; // $ExpectType number
attachment.thumbnails.small.url; // $ExpectType string
}
}
}
}
};

62
types/airtable/index.d.ts vendored Normal file
View File

@@ -0,0 +1,62 @@
// Type definitions for airtable 0.5
// Project: https://github.com/airtable/airtable.js
// Definitions by: Brandon Valosek <https://github.com/bvalosek>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
// TypeScript Version: 2.2
export = Airtable;
declare global {
class Airtable {
base(appId: string): Airtable.Base;
}
namespace Airtable {
interface FieldSet {
[ key: string ]: undefined | string | ReadonlyArray<Attachment>;
}
interface Base {
(tableName: string): Table<{}>;
}
interface Table<TFields extends FieldSet> {
select(opt?: SelectOptions): Query<TFields>;
}
interface SelectOptions {
view?: string;
}
interface Query<TFields extends object> {
all(): Promise<Response<TFields>>;
firstPage(): Promise<Response<TFields>>;
}
type Response<TFields> = ReadonlyArray<Row<TFields>>;
interface Row<TFields> {
id: string;
fields: TFields;
}
interface Attachment {
id: string;
url: string;
filename: string;
size: number;
type: string;
thumbnails?: {
small: Thumbnail;
large: Thumbnail;
full: Thumbnail;
};
}
interface Thumbnail {
url: string;
width: number;
height: number;
}
}
}

View File

@@ -18,6 +18,6 @@
},
"files": [
"index.d.ts",
"has-yarn-tests.ts"
"airtable-tests.ts"
]
}

View File

@@ -8,6 +8,7 @@
"callable-types": false,
"comment-format": false,
"dt-header": false,
"npm-naming": false,
"eofline": false,
"export-just-namespace": false,
"import-spacing": false,

View File

@@ -8,6 +8,7 @@
"callable-types": false,
"comment-format": false,
"dt-header": false,
"npm-naming": false,
"eofline": false,
"export-just-namespace": false,
"import-spacing": false,

37
types/align-text/index.d.ts vendored Normal file
View File

@@ -0,0 +1,37 @@
// Type definitions for align-text 1.0
// Project: https://github.com/jonschlinkert/align-text
// Definitions by: Claas Ahlrichs <https://github.com/claasahl>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
// TypeScript Version: 2.1
interface TransformResult {
/**
* the amount of indentation to use. Default is 0 when an object is returned.
*/
indent: number;
/**
* the character to use for indentation. Default is '' (empty string) when an object is returned.
*/
character: string;
/**
* leading characters to use at the beginning of each line. '' (empty string) when an object is returned.
*/
prefix: string;
}
interface Callback {
/**
* @param len the length of the "current" line
* @param longest the length of the longest line
* @param line the current line (string) being aligned
* @param lines the array of all lines
*/
(len: number, longest: number, line: string, lines: string[]):
| number
| TransformResult;
}
declare function align_text(text: string, fn: number | Callback): string;
declare function align_text(text: string[], fn: number | Callback): string[];
export = align_text;

View File

@@ -0,0 +1,12 @@
import align from "align-text";
function centerAlign(len: number, longest: number) {
return {
character: "\t",
indent: Math.floor((longest - len) / 2),
prefix: "~ "
};
}
const text = ["abc", "abc", "abc"];
align(text, centerAlign);

View File

@@ -0,0 +1,8 @@
import align from "align-text";
function centerAlign(len: number, longest: number) {
return Math.floor((longest - len) / 2);
}
const text = ["abc", "abc", "abc"];
align(text, centerAlign);

View File

@@ -0,0 +1,6 @@
import align from "align-text";
const text = ["abc", "abc", "abc"];
align(text, 4);
align("abc", 2);

View File

@@ -0,0 +1,22 @@
{
"compilerOptions": {
"module": "commonjs",
"lib": ["es6"],
"noImplicitAny": true,
"noImplicitThis": true,
"strictNullChecks": true,
"strictFunctionTypes": true,
"baseUrl": "../",
"typeRoots": ["../"],
"types": [],
"noEmit": true,
"forceConsistentCasingInFileNames": true,
"allowSyntheticDefaultImports": true
},
"files": [
"index.d.ts",
"test/simple.ts",
"test/center-simple.ts",
"test/center-complex.ts"
]
}

View File

@@ -8,6 +8,7 @@
"callable-types": false,
"comment-format": false,
"dt-header": false,
"npm-naming": false,
"eofline": false,
"export-just-namespace": false,
"import-spacing": false,

View File

@@ -0,0 +1,114 @@
// $ExpectType IndoorMap
new AMap.IndoorMap();
// $ExpectType IndoorMap
new AMap.IndoorMap({});
// $ExpectType IndoorMap
const indoorMap = new AMap.IndoorMap({
zIndex: 1,
opacity: 0.5,
cursor: 'cursor',
hideFloorBar: false,
alaysShow: true
});
// $ExpectType void
indoorMap.showIndoorMap('indoorMapId');
// $ExpectType void
indoorMap.showIndoorMap('indoorMapId', (error, result) => {
// $ExpectType Error | null
error;
// $ExpectType SearchResult
result;
// $ExpectType string
result.id;
// $ExpectType 0 | 1
result.status;
if (result.status === 0) {
// $ExpectType Building
const building = result.building;
{
// $ExpectType number
building.floor;
// $ExpectType FloorDetails
const floorDetails = building.floor_details;
{
// $ExpectType number[]
floorDetails.floor_indexs;
// $ExpectType string[]
floorDetails.floor_names;
// $ExpectType string[]
floorDetails.floor_nonas;
}
// $ExpectType string
building.id;
// $ExpectType LngLat
building.lnglat;
// $ExpectType string
building.name;
}
} else {
// $ExpectType Error
result.error;
}
});
// $ExpectType void
indoorMap.showIndoorMap('indoorMapId', 1);
// $ExpectType void
indoorMap.showIndoorMap('indoorMapId', 1, () => { });
// $ExpectType void
indoorMap.showIndoorMap('indoorMapId', 1, 'shopId');
// $ExpectType void
indoorMap.showIndoorMap('indoorMapId', 1, 'shopId', () => { });
// $ExpectType void
indoorMap.showIndoorMap('indoorMapId', 1, 'shopId', true);
// $ExpectType void
indoorMap.showIndoorMap('indoorMapId', 1, 'shopId', true, () => { });
let floor: undefined | false;
floor = indoorMap.showFloor(1);
floor = indoorMap.showFloor(1, true);
// $ExpectType void
indoorMap.showFloorBar();
// $ExpectType void
indoorMap.hideFloorBar();
// $ExpectType void
indoorMap.hideLabels();
// $ExpectType string | null
indoorMap.getSelectedBuildingId();
// $ExpectType Building | null
const building = indoorMap.getSelectedBuilding();
if (building) {
// $ExpectType number
building.floor;
// $ExpectType FloorDetails
building.floor_details;
// $ExpectType string
building.id;
// $ExpectType LngLat
building.lnglat;
// $ExpectType string
building.name;
}
indoorMap.on('complete', (event: AMap.IndoorMap.EventMap['complete']) => {
// $ExpectType "complete"
event.type;
});
indoorMap.on('click', (event: AMap.IndoorMap.EventMap['click']) => {
// $ExpectType string
event.building_id;
// $ExpectType number
event.floor;
// $ExpectType LngLat
event.lnglat;
// $ExpectType Shop
event.shop;
// $ExpectType "click"
event.type;
});

239
types/amap-js-api-indoor-map/index.d.ts vendored Normal file
View File

@@ -0,0 +1,239 @@
// Type definitions for non-npm package amap-js-api-indoor-map 1.4
// Project: https://lbs.amap.com/api/javascript-api/reference/indoormap
// Definitions by: breeze9527 <https://github.com/breeze9527>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
// TypeScript Version: 2.8
/// <reference types="amap-js-api" />
declare namespace AMap {
namespace IndoorMap {
interface EventMap {
complete: Event<'complete'>;
click: MouseEvent<'click'>;
floor_complete: Event<'floor_complete', SearchResult>;
mouseover: MouseEvent<'mouseover'>;
mouseout: MouseEvent<'mouseout'>;
}
type MouseEvent<N extends string> = Event<N, {
/**
* 店铺所属楼宇信息
*/
building_id: string;
/**
* 经纬度
*/
lnglat: LngLat;
/**
* 楼层
*/
floor: number;
/**
* 商店
*/
shop: Shop;
}>;
interface Options extends Layer.Options {
/**
* 图层叠加的顺序值
*/
zIndex?: number;
/**
* 图层的透明度
*/
opacity?: number;
/**
* 鼠标悬停到店铺面时的鼠标样式
*/
cursor?: string;
/**
* 是否隐藏楼层切换控件
*/
hideFloorBar?: boolean;
/**
* 是否持续显示
*/
alaysShow?: boolean;
// internal
visible?: boolean;
featurezIndex?: number;
zooms?: [number, number];
disableIconRender?: boolean;
disableLabelRender?: boolean;
disableHoverMarker?: boolean;
autoLoadBuildingsInTile?: boolean;
}
interface FloorDetails {
/**
* 各楼层索引
*/
floor_indexs: number[];
/**
* 各楼层英文
*/
floor_nonas: string[];
/**
* 各楼层名字
*/
floor_names: string[];
}
type ShopCategory = 'public' | 'connection' | 'shop';
interface Shop {
/**
* 店铺的id
*/
id: string;
/**
* 兴趣点ID
*/
poiId: string;
/**
* 店铺所属楼宇ID
*/
building_id: string;
/**
* 店铺名称
*/
name: string;
/**
* 店铺的经纬度
*/
lnglat: LngLat;
/**
* 分类
*/
category: ShopCategory;
}
interface Building {
/**
* 所属楼宇ID
*/
id: string;
/**
* 楼层名称
*/
name: string;
/**
* 楼层的经纬度
*/
lnglat: LngLat;
/**
* 所在楼层
*/
floor: number;
floor_details: FloorDetails;
}
interface SearchSuccessResult {
/**
* 楼层的id
*/
id: string;
status: 0;
/**
* 建筑信息
*/
building: Building;
}
interface SearchErrorResult {
/**
* 楼宇id
*/
id: string;
status: 1;
error: Error;
}
type SearchResult = SearchSuccessResult | SearchErrorResult;
}
class IndoorMap extends Layer {
/**
* 室内地图
* @param options 选项
*/
constructor(options?: IndoorMap.Options);
/**
* 显示指定室内地图信息
* @param indoorId 建筑物ID
* @param callback 回调
*/
showIndoorMap(
indoorId: string,
callback?: (error: null | Error, result: IndoorMap.SearchResult) => void
): void;
/**
* 显示指定室内地图信息
* @param indoorId 建筑物ID
* @param floor 楼层
* @param callback 回调
*/
showIndoorMap(
indoorId: string,
floor?: number,
callback?: (error: null | Error, result: IndoorMap.SearchResult) => void
): void;
/**
* 显示指定室内地图信息
* @param indoorId 建筑物ID
* @param floor 楼层
* @param shopId 商铺ID
* @param callback 回调
*/
showIndoorMap(
indoorId: string,
floor?: number,
shopId?: string,
callback?: (error: null | Error, result: IndoorMap.SearchResult) => void
): void;
/**
* 显示指定室内地图信息
* @param indoorId 建筑物ID
* @param floor 楼层
* @param shopId 商铺ID
* @param noMove 阻止移动
* @param callback 回调
*/
showIndoorMap(
indoorId: string,
floor?: number,
shopId?: string,
noMove?: boolean,
callback?: (error: null | Error, result: IndoorMap.SearchResult) => void
): void;
/**
* 显示指定的楼层
* @param floor 楼层
* @param noMove 禁止移动
*/
showFloor(floor: number, noMove?: boolean): false | undefined;
/**
* 显示楼层切换控件
*/
showFloorBar(): void;
/**
* 隐藏楼层切换控件
*/
hideFloorBar(): void;
/**
* 显示室内地图标注
*/
showLabels(): void;
/**
* 隐藏室内地图标注
*/
hideLabels(): void;
/**
* 获取处于被选中状态的室内地图的ID
*/
getSelectedBuildingId(): string | null;
/**
* 获取处于被选中状态的室内地图的一些基本信息
*/
getSelectedBuilding(): IndoorMap.Building | null;
// internal
getFloorBar(): void;
setSelectedBuildingId(id: string): void;
}
}

View File

@@ -5,6 +5,7 @@
"es6",
"dom"
],
"noEmit": true,
"noImplicitAny": true,
"noImplicitThis": true,
"strictNullChecks": true,
@@ -14,11 +15,10 @@
"../"
],
"types": [],
"noEmit": true,
"forceConsistentCasingInFileNames": true
},
"files": [
"index.d.ts",
"screenfull-tests.ts"
"amap-js-api-indoor-map-tests.ts"
]
}

View File

@@ -0,0 +1,489 @@
/**
* preset.ts
*/
declare const map: AMap.Map;
declare const lnglat: AMap.LngLat;
declare const size: AMap.Size;
declare const lnglatTuple: [number, number];
declare const pixel: AMap.Pixel;
declare const layer: AMap.Layer;
declare const ambientLight: AMap.Lights.AmbientLight;
declare const directionLight: AMap.Lights.DirectionLight;
declare const line: AMap.Object3D.Line;
declare const mesh: AMap.Object3D.Mesh;
declare const object3d: AMap.Object3D;
declare const geometry: AMap.Geometry3D.Mesh;
/**
* lights.ts
*/
// $ExpectType AmbientLight
const testAmbientLight = new AMap.Lights.AmbientLight([0.1, 0, 0.1], 1);
// $ExpectType void
testAmbientLight.setColor([0.1, 1, 0.5]);
// $ExpectType void
testAmbientLight.setIntensity(1);
// $ExpectType DirectionLight
const testDirectionLight = new AMap.Lights.DirectionLight([1, 2, 3], [1, 2, 3], 1);
// $ExpectType void
testDirectionLight.setColor([1, 2, 3]);
// $ExpectType void
testDirectionLight.setIntensity(1);
// $ExpectType void
testDirectionLight.setDirection([1, 2, 3]);
/**
* map3d.ts
*/
// $ExpectType Object3DResult | null
map.getObject3DByContainerPos(pixel);
// $ExpectType Object3DResult | null
const containserPos = map.getObject3DByContainerPos(pixel, [layer], true);
if (containserPos) {
// $ExpectType number
containserPos.index;
// $ExpectType Vector3
containserPos.point;
// $ExpectType number
containserPos.distance;
// $ExpectType Object3D
containserPos.object;
} else {
// $ExpectType null
containserPos;
}
map.AmbientLight = ambientLight;
map.AmbientLight = undefined;
map.DirectionLight = directionLight;
map.DirectionLight = undefined;
/**
* object3d-group.ts
*/
// $ExpectType Object3DGroup<Object3D>
const testObject3dGroup1 = new AMap.Object3DGroup();
// $ExpectType Object3DGroup<Mesh>
const testObject3dGroup2 = new AMap.Object3DGroup<AMap.Object3D.Mesh>();
// $ExpectType Object3D[]
testObject3dGroup1.children;
// $ExpectType Mesh[]
testObject3dGroup2.children;
// $ExoectType void
testObject3dGroup1.add(line);
// $ExoectType void
testObject3dGroup1.add(mesh);
// $ExoectType void
testObject3dGroup2.add(mesh);
// $ExpectError
testObject3dGroup2.add(line);
// $ExoectType void
testObject3dGroup1.remove(line);
// $ExoectType void
testObject3dGroup1.remove(mesh);
// $ExoectType void
testObject3dGroup2.remove(mesh);
// $ExpectError
testObject3dGroup2.remove(line);
/**
* object3d-Layer.ts
*/
// $ExpectType Object3DLayer
new AMap.Object3DLayer();
// $ExpectType Object3DLayer
new AMap.Object3DLayer({});
// $ExpectType Object3DLayer
const testObject3DLayer = new AMap.Object3DLayer({
map,
visible: true,
opacity: 0.1,
zIndex: 2,
zooms: [1, 2]
});
// $ExpectType void
testObject3DLayer.setMap(null);
// $ExpectType void
testObject3DLayer.setMap(map);
// $ExpectType Map | null | undefined
testObject3DLayer.getMap();
// $ExpectType void
testObject3DLayer.hide();
// $ExpectType void
testObject3DLayer.show();
// $ExpectType void
testObject3DLayer.setOpacity(1);
// $ExpectType number
testObject3DLayer.getOpacity();
// $ExpectType void
testObject3DLayer.setzIndex(1);
// $ExpectType number
testObject3DLayer.getzIndex();
// $ExpectType [number, number]
testObject3DLayer.getZooms();
// $ExpectType void
testObject3DLayer.add(object3d);
// $ExpectType void
testObject3DLayer.remove(object3d);
// $ExpectType void
testObject3DLayer.clear();
// $ExpectType void
testObject3DLayer.reDraw();
/**
* vector3.ts
*/
// $ExpectType Vector3
const testVector = new AMap.Vector3([1, 2, 3]);
// $ExpectType Vector3
new AMap.Vector3(testVector);
// $ExpectType [number, number, number]
testVector.elements;
// $ExpectType void
testVector.set(1, 2, 3);
// $ExpectType number
testVector.dot();
// $ExpectType Vector3
testVector.clone();
// $ExpectType Vector3
testVector.add(testVector);
// $ExpectType Vector3
testVector.add([1, 2, 3]);
// $ExpectType Vector3
testVector.sub(testVector);
// $ExpectType Vector3
testVector.sub([1, 2, 3]);
// $ExpectType Vector3
testVector.addVectors(testVector, testVector);
// $ExpectType Vector3
testVector.subVectors(testVector, testVector);
// $ExpectType Vector3
testVector.crossVectors(testVector, testVector);
// $ExpectType Vector3
testVector.normalize();
// $ExpectType number
testVector.length();
/**
* object3d/mesh.ts
*/
// $ExpectType Mesh
const testMesh = new AMap.Object3D.Mesh();
// $ExpectError
testMesh.geometry = geometry;
// $ExpectType number[]
testMesh.geometry.vertices;
// $ExpectError
testMesh.geometry.vertices = [];
testMesh.geometry.vertices.shift();
// $ExpectType number[]
testMesh.geometry.vertexColors;
// $ExpectError
testMesh.geometry.vertexColors = [];
testMesh.geometry.vertexColors.shift();
// $ExpectType number[]
testMesh.geometry.vertexUVs;
// $ExpectError
testMesh.geometry.vertexUVs = [];
testMesh.geometry.vertexUVs.shift();
// $ExpectType number[]
testMesh.geometry.faces;
// $ExpectError
testMesh.geometry.faces = [];
testMesh.geometry.faces.shift();
// $ExpectType number[]
testMesh.geometry.textureIndices;
// $ExpectError
testMesh.geometry.textureIndices = [];
testMesh.geometry.textureIndices.shift();
// $ExpectType (string | HTMLCanvasElement)[]
testMesh.textures;
// $ExpectType boolean
testMesh.needUpdate;
// $ExpectType boolean
testMesh.transparent;
// $ExpectType boolean
testMesh.DEPTH_TEST;
// $ExpectType void
testMesh.reDraw();
/**
* object3d/meshAcceptLights.ts
*/
// $ExpectType MeshAcceptLights
const testMeshAcceptLights = new AMap.Object3D.MeshAcceptLights();
// $ExpectError
testMeshAcceptLights.geometry = geometry;
// $ExpectType number[]
testMeshAcceptLights.geometry.vertices;
// $ExpectError
testMeshAcceptLights.geometry.vertices = [];
testMeshAcceptLights.geometry.vertices.shift();
// $ExpectType number[]
testMeshAcceptLights.geometry.vertexColors;
// $ExpectError
testMeshAcceptLights.geometry.vertexColors = [];
testMeshAcceptLights.geometry.vertexColors.shift();
// $ExpectType number[]
testMeshAcceptLights.geometry.vertexUVs;
// $ExpectError
testMeshAcceptLights.geometry.vertexUVs = [];
testMeshAcceptLights.geometry.vertexUVs.shift();
// $ExpectType number[]
testMeshAcceptLights.geometry.faces;
// $ExpectError
testMeshAcceptLights.geometry.faces = [];
testMeshAcceptLights.geometry.faces.shift();
// $ExpectType number[]
testMeshAcceptLights.geometry.textureIndices;
// $ExpectError
testMeshAcceptLights.geometry.textureIndices = [];
testMeshAcceptLights.geometry.textureIndices.shift();
// $ExpectType number[]
testMeshAcceptLights.geometry.vertexNormals;
// $ExpectError
testMeshAcceptLights.geometry.vertexNormals = [];
testMeshAcceptLights.geometry.vertexNormals.shift();
// $ExpectType (string | HTMLCanvasElement)[]
testMeshAcceptLights.textures;
// $ExpectType boolean
testMeshAcceptLights.needUpdate;
// $ExpectType boolean
testMeshAcceptLights.transparent;
// $ExpectType boolean
testMeshAcceptLights.DEPTH_TEST;
// $ExpectType void
testMeshAcceptLights.reDraw();
/**
* object3d/meshLine.ts
*/
// $ExpectError
new AMap.Object3D.MeshLine();
// $ExpectError
new AMap.Object3D.MeshLine({});
// $ExpectType MeshLine
const testMeshLine = new AMap.Object3D.MeshLine({
path: [lnglat],
width: 1,
height: 1,
color: 'red'
});
// $ExpectType MeshLine
new AMap.Object3D.MeshLine({
path: [lnglat],
color: [0, 0, 1, 1]
});
// $ExpectType MeshLine
new AMap.Object3D.MeshLine({
path: [[1, 2]]
});
// $ExpectType MeshLine
new AMap.Object3D.MeshLine({
path: [lnglat],
unit: 'meter'
});
// $ExpectType MeshLine
new AMap.Object3D.MeshLine({
path: [pixel],
unit: 'px'
});
// $ExpectError
new AMap.Object3D.MeshLine({
path: [lnglat],
unit: 'px'
});
// $ExpectError
new AMap.Object3D.MeshLine({
path: [pixel],
unit: 'meter'
});
// $ExpectType number[]
testMeshLine.geometry.vertices;
// $ExpectError
testMeshLine.geometry.vertices = [];
testMeshLine.geometry.vertices.shift();
// $ExpectType number[]
testMeshLine.geometry.vertexUVs;
// $ExpectError
testMeshLine.geometry.vertexUVs = [];
testMeshLine.geometry.vertexUVs.shift();
// $ExpectType number[]
testMeshLine.geometry.vertexColors;
// $ExpectError
testMeshLine.geometry.vertexColors = [];
testMeshLine.geometry.vertexColors.shift();
// $ExpectType number[]
testMeshLine.geometry.vertexColors;
// $ExpectError
testMeshLine.geometry.vertexColors = [];
testMeshLine.geometry.vertexColors.shift();
// $ExpectType number[]
testMeshLine.geometry.vertexIndices;
// $ExpectError
testMeshLine.geometry.vertexIndices = [];
testMeshLine.geometry.vertexIndices.shift();
// $ExpectType number[]
testMeshLine.geometry.directions;
// $ExpectError
testMeshLine.geometry.directions = [];
testMeshLine.geometry.directions.shift();
// $ExpectType number[]
testMeshLine.geometry.textureIndices;
// $ExpectError
testMeshLine.geometry.textureIndices = [];
testMeshLine.geometry.textureIndices.shift();
// $ExpectType number
testMeshLine.width;
// $ExpectType void
testMeshLine.setPath([lnglat]);
// $ExpectType void
testMeshLine.setPath([lnglatTuple]);
// $ExpectType void
testMeshLine.setPath([pixel]);
// $ExpectType void
testMeshLine.setWidth(10);
// $ExpectType void
testMeshLine.setHeight(10);
// $ExpectType void
testMeshLine.setColor('red');
/**
* object3d/prism.ts
*/
// $ExpectError
new AMap.Object3D.Prism();
// $ExpectError
new AMap.Object3D.Prism({});
// $ExpectType Prism
new AMap.Object3D.Prism({
path: [lnglat],
color: 'red'
});
// $ExpectType Prism
new AMap.Object3D.Prism({
path: [lnglat],
color: 'red',
height: 1,
color2: 'blue'
});
// $ExpectType Prism
new AMap.Object3D.Prism({
path: [pixel],
color: 'red'
});
// $ExpectType Prism
new AMap.Object3D.Prism({
path: [lnglat],
color: 'red'
});
// $ExpectType Prism
new AMap.Object3D.Prism({
path: [[lnglat]],
color: 'red'
});
// $ExpectType Prism
new AMap.Object3D.Prism({
path: [[pixel]],
color: 'red'
});
// $ExpectType Prism
new AMap.Object3D.Prism({
path: [[lnglatTuple]],
color: 'red'
});
// $ExpectType Prism
new AMap.Object3D.Prism({
path: [lnglat],
color: ['red']
});
// $ExpectType Prism
new AMap.Object3D.Prism({
path: [lnglat],
color: [1, 1, 1, 1]
});
// $ExpectType Prism
new AMap.Object3D.Prism({
path: [lnglat],
color: [[1, 1, 1, 1]]
});

View File

@@ -0,0 +1,28 @@
declare namespace AMap {
abstract class Geometry3D {
readonly vertices: number[];
readonly vertexUVs: number[];
readonly vertexColors: number[];
}
namespace Geometry3D {
class Mesh extends Geometry3D {
readonly type: 'mesh';
readonly faces: number[];
readonly textureIndices: number[];
}
class Line extends Geometry3D {
readonly type: 'line';
readonly segments: number[];
readonly textureIndices: number[];
}
class Points extends Geometry3D {
readonly type: 'points';
readonly pointSizes: number[];
readonly pointAreas: number[];
readonly textureIndices: number[];
}
}
}

15
types/amap-js-api-map3d/index.d.ts vendored Normal file
View File

@@ -0,0 +1,15 @@
// Type definitions for non-npm package amap-js-api-map3d 1.4
// Project: https://lbs.amap.com/api/javascript-api/reference/maps-3d
// Definitions by: breeze9527 <https://github.com/breeze9527>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
// TypeScript Version: 2.8
/// <reference types="amap-js-api" />
/// <reference path="geometry-3d.d.ts" />
/// <reference path="lights.d.ts" />
/// <reference path="map3d.d.ts" />
/// <reference path="object3d-group.d.ts" />
/// <reference path="object3d-layer.d.ts" />
/// <reference path="object3d.d.ts" />
/// <reference path="vector3.d.ts" />

17
types/amap-js-api-map3d/lights.d.ts vendored Normal file
View File

@@ -0,0 +1,17 @@
declare namespace AMap {
namespace Lights {
class AmbientLight {
constructor(color: [number, number, number], intensity: number);
setColor(color: [number, number, number]): void;
setIntensity(intensity: number): void;
}
class DirectionLight {
constructor(direction: [number, number, number], color: [number, number, number], intensity: number);
update(): void;
setDirection(direction: [number, number, number]): void;
setColor(direction: [number, number, number]): void;
setIntensity(intensity: number): void;
}
}
}

15
types/amap-js-api-map3d/map3d.d.ts vendored Normal file
View File

@@ -0,0 +1,15 @@
declare namespace AMap {
namespace Map {
interface Object3DResult {
index: number;
point: Vector3;
distance: number;
object: Object3D;
}
}
interface Map {
AmbientLight?: Lights.AmbientLight;
DirectionLight?: Lights.DirectionLight;
getObject3DByContainerPos(pixel: Pixel, layers?: Layer[], all?: boolean): Map.Object3DResult | null;
}
}

View File

@@ -0,0 +1,8 @@
declare namespace AMap {
class Object3DGroup<C extends Object3D = Object3D> extends Object3D {
constructor();
children: C[];
add(object3d: C): void;
remove(object3d: C): void;
}
}

View File

@@ -0,0 +1,27 @@
declare namespace AMap {
namespace Object3DLayer {
interface Options {
map?: Map;
visible?: boolean;
opacity?: number;
zIndex?: number;
zooms?: [number, number];
}
}
class Object3DLayer extends Layer {
constructor(options?: Object3DLayer.Options)
add(object3d: Object3D): void;
remove(object3d: Object3D): void;
clear(): void;
reDraw(): void;
// internal
setOption(options: {
position?: number;
scale?: number;
height?: number;
scene?: number;
}): void;
}
}

92
types/amap-js-api-map3d/object3d.d.ts vendored Normal file
View File

@@ -0,0 +1,92 @@
declare namespace AMap {
class Object3D {
readonly geometry: Geometry3D;
transparent: boolean;
DEPTH_TEST: boolean;
textures: Array<string | HTMLCanvasElement>;
needUpdate: boolean;
reDraw(): void;
// internal
reset(): void;
}
namespace Object3D {
class Mesh extends Object3D {
readonly geometry: Geometry3D.Mesh;
}
class MeshAcceptLights extends Mesh {
readonly geometry: Geometry3D.Mesh & { readonly vertexNormals: number[] };
}
namespace Prism {
interface Options {
path: LngLat[] | Pixel[] | Array<LngLat[] | Pixel[] | Array<[number, number]>>;
color: string | number[] | Array<string | number[]>;
height?: number;
color2?: string | number[] | Array<string | number[]>;
}
}
class Prism extends MeshAcceptLights {
constructor(options: Prism.Options);
}
// tslint:disable-next-line
class Wall extends Prism { }
class Line extends Object3D {
readonly geometry: Geometry3D.Line;
}
namespace ThinLine {
interface Options {
path: Array<[number, number]>;
color: string;
altitude?: number;
dashArray?: number[];
}
}
class ThinLine extends Line {
constructor(options: ThinLine.Options);
}
class Points extends Object3D {
readonly geometry: Geometry3D.Points;
borderColor: string;
borderWeight: number;
}
class RoundPoints extends Points {
merge: boolean;
}
namespace MeshLine {
type Options = {
width?: number;
height?: number | number[];
color?: string | number[];
} & ({
unit?: 'meter';
path: Array<[number, number]> | LngLat[];
} | {
unit: 'px';
path: Array<[number, number]> | Pixel[];
});
}
// inherit from WideLine
class MeshLine extends Object3D {
constructor(options: MeshLine.Options);
readonly geometry: Geometry3D & {
readonly vertexIndices: number[];
readonly directions: number[];
readonly textureIndices: number[];
};
width: number;
setPath(path: LngLat[] | Pixel[] | Array<[number, number]>): void;
setWidth(width: number): void;
setHeight(height: number | number[]): void;
setColor(color: string): void;
}
}
}

View File

@@ -0,0 +1,31 @@
{
"compilerOptions": {
"module": "commonjs",
"lib": [
"es6",
"dom"
],
"noEmit": true,
"noImplicitAny": true,
"noImplicitThis": true,
"strictNullChecks": true,
"strictFunctionTypes": true,
"baseUrl": "../",
"typeRoots": [
"../"
],
"types": [],
"forceConsistentCasingInFileNames": true
},
"files": [
"geometry-3d.d.ts",
"index.d.ts",
"lights.d.ts",
"map3d.d.ts",
"object3d-group.d.ts",
"object3d-layer.d.ts",
"object3d.d.ts",
"vector3.d.ts",
"amap-js-api-map3d-tests.ts"
]
}

16
types/amap-js-api-map3d/vector3.d.ts vendored Normal file
View File

@@ -0,0 +1,16 @@
declare namespace AMap {
class Vector3 {
readonly elements: [number, number, number];
constructor(elements: [number, number, number] | Vector3);
set(x: number, y: number, z: number): void;
dot(): number;
clone(): Vector3;
add(elements: [number, number, number] | Vector3): this;
sub(elements: [number, number, number] | Vector3): this;
addVectors(a: Vector3, b: Vector3): this;
subVectors(a: Vector3, b: Vector3): this;
crossVectors(a: Vector3, b: Vector3): this;
normalize(): this;
length(): number;
}
}

View File

@@ -0,0 +1,435 @@
declare const map: AMap.Map;
declare const div: HTMLElement;
declare const lnglat: AMap.LngLat;
declare const lnglatTuple: [number, number];
declare const bounds: AMap.Bounds;
declare const polygon: AMap.Polygon;
declare const lang: AMap.Lang;
// $ExpectType PlaceSearch
const placeSearch = new AMap.PlaceSearch();
// $ExpectType PlaceSearch
new AMap.PlaceSearch({});
// $ExpectType PlaceSearch
new AMap.PlaceSearch({
city: '深圳',
citylimit: true,
children: 1,
type: '餐饮服务',
lang: 'zh_cn',
pageSize: 10,
pageIndex: 10,
extensions: 'all',
map,
panel: div,
showCover: true,
renderStyle: 'newpc',
autoFitView: true
});
// $ExpectType void
placeSearch.search('keyword', (status, result) => {
const temp: 'error' | 'complete' | 'no_data' = status;
// $ExpectType string | SearchResult
result;
if (typeof result !== 'string') {
// $ExpectType string
result.info;
// $ExpectType PoiList
result.poiList;
// $ExpectType string[] | undefined
result.keywordList;
// $ExpectType CityInfo[] | undefined
result.cityList;
const poiList = result.poiList;
// $ExpectType number
poiList.pageIndex;
// $ExpectType number
poiList.pageSize;
// $ExpectType number
poiList.count;
const poi = poiList.pois[0];
// $ExpectType string
poi.address;
// $ExpectType number
poi.distance;
// $ExpectType string
poi.id;
// $ExpectType LngLat | null
poi.location;
// $ExpectType string
poi.name;
// $ExpectType string
poi.shopinfo;
// $ExpectType string
poi.tel;
// $ExpectType string
poi.type;
if ('website' in poi) {
// $ExpectType string
poi.adcode;
// $ExpectType string
poi.adname;
// $ExpectType string
poi.citycode;
// $ExpectType string
poi.cityname;
// $ExpectType boolean
poi.discount;
// $ExpectType string
poi.email;
// $ExpectType LngLat | null
poi.entr_location;
// $ExpectType LngLat | null
poi.exit_location;
// $ExpectType boolean
poi.groupbuy;
if (poi.indoor_map) {
const indoorData = poi.indoor_data;
// $ExpectType string
indoorData.cpid;
// $ExpectType string
indoorData.floor;
// $ExpectType string
indoorData.truefloor;
}
poi.pcode;
// $ExpectType PoiPhoto[]
poi.photos;
// $ExpectType string
poi.pname;
// $ExpectType string
poi.postcode;
// $ExpectType string
poi.website;
const photo = poi.photos[0];
// $ExpectType string
photo.title;
// $ExpectType string
photo.url;
// $ExpectType Groupbuy[] | undefined
poi.groupbuys;
if (poi.groupbuys) {
const groupbuy = poi.groupbuys[0];
// $ExpectType string
groupbuy.title;
// $ExpectType string
groupbuy.type_code;
// $ExpectType string
groupbuy.type;
// $ExpectType string
groupbuy.detail;
// $ExpectType string
groupbuy.stime;
// $ExpectType string
groupbuy.etime;
// $ExpectType number
groupbuy.count;
// $ExpectType number
groupbuy.sold_num;
// $ExpectType number
groupbuy.original_price;
// $ExpectType number
groupbuy.groupbuy_price;
// $ExpectType number
groupbuy.discount;
// $ExpectType string
groupbuy.ticket_address;
// $ExpectType string
groupbuy.ticket_tel;
// $ExpectType PoiPhoto[]
groupbuy.photos;
// $ExpectType string
groupbuy.url;
// $ExpectType string
groupbuy.provider;
}
// $ExpectType Discount[] | undefined
poi.discounts;
if (poi.discounts) {
const discount = poi.discounts[0];
// $ExpectType string
discount.title;
// $ExpectType string
discount.detail;
// $ExpectType string
discount.start_time;
// $ExpectType string
discount.end_time;
// $ExpectType number
discount.sold_num;
// $ExpectType PoiPhoto[]
discount.photos;
// $ExpectType string
discount.url;
// $ExpectType string
discount.provider;
}
if (poi.deep_type === 'CINEMA') {
// $ExpectType Cinema
const cinema = poi.cinema;
// $ExpectType string
cinema.intro;
// $ExpectType string
cinema.rating;
// $ExpectType string
cinema.deep_src;
// $ExpectType string
cinema.parking;
// $ExpectType string
cinema.opentime_GDF;
// $ExpectType string
cinema.opentime;
// $ExpectType PoiPhoto[]
cinema.photos;
}
if (poi.deep_type === 'DINING') {
// $ExpectType Dining
const dining = poi.dining;
// $ExpectType string
dining.cuisines;
// $ExpectType string
dining.tag;
// $ExpectType string
dining.intro;
// $ExpectType string
dining.rating;
// $ExpectType string
dining.cp_rating;
// $ExpectType string
dining.deep_src;
// $ExpectType string
dining.taste_rating;
// $ExpectType string
dining.environment_rating;
// $ExpectType string
dining.service_rating;
// $ExpectType string
dining.cost;
// $ExpectType string
dining.recommend;
// $ExpectType string
dining.atmosphere;
// $ExpectType string
dining.ordering_wap_url;
// $ExpectType string
dining.ordering_web_url;
// $ExpectType string
dining.ordering_app_url;
// $ExpectType string
dining.opentime_GDF;
// $ExpectType string
dining.opentime;
// $ExpectType string
dining.addition;
// $ExpectType PoiPhoto[]
dining.photos;
}
if (poi.deep_type === 'SCENIC') {
// $ExpectType Scenic
const scenic = poi.scenic;
// $ExpectType string
scenic.intro;
// $ExpectType string
scenic.rating;
// $ExpectType string
scenic.deep_src;
// $ExpectType string
scenic.level;
// $ExpectType string
scenic.price;
// $ExpectType string
scenic.season;
// $ExpectType string
scenic.recommend;
// $ExpectType string
scenic.theme;
// $ExpectType string
scenic.ordering_wap_url;
// $ExpectType string
scenic.ordering_web_url;
// $ExpectType string
scenic.opentime_GDF;
// $ExpectType string
scenic.opentime;
// $ExpectType PoiPhoto[]
scenic.photos;
}
if (poi.deep_type === 'HOTEL') {
// $ExpectType Hotel
const hotel = poi.hotel;
// $ExpectType string
hotel.rating;
// $ExpectType string
hotel.star;
// $ExpectType string
hotel.intro;
// $ExpectType string
hotel.lowest_price;
// $ExpectType string
hotel.faci_rating;
// $ExpectType string
hotel.health_rating;
// $ExpectType string
hotel.environment_rating;
// $ExpectType string
hotel.service_rating;
// $ExpectType string
hotel.traffic;
// $ExpectType string
hotel.addition;
// $ExpectType string
hotel.deep_src;
// $ExpectType PoiPhoto[]
hotel.photos;
}
}
if (result.cityList) {
const city = result.cityList[0];
// $ExpectType string
city.adcode;
// $ExpectType string
city.citycode;
// $ExpectType number
city.count;
// $ExpectType string
city.name;
}
} else {
// $ExpectType string
result;
}
});
// $ExpectType void
placeSearch.searchNearBy('keyword', lnglat, 10, (status, result) => {
const temp: 'error' | 'complete' | 'no_data' = status;
// $ExpectType string | SearchResult
result;
});
// $ExpectType void
placeSearch.searchNearBy('keyword', lnglatTuple, 10, () => { });
// $ExpectType void
placeSearch.searchInBounds('keyword', bounds, (status, result) => {
const temp: 'error' | 'complete' | 'no_data' = status;
// $ExpectType string | SearchResult
result;
});
// $ExpectType void
placeSearch.searchInBounds('keyword', polygon, () => { });
// $ExpectType void
placeSearch.getDetails('id', (status, result) => {
const temp: 'error' | 'complete' | 'no_data' = status;
// $ExpectType string | SearchResult
result;
});
// $ExpectType void
placeSearch.setType('type');
// $ExpectType void
placeSearch.setType();
// $ExpectType void
placeSearch.setCityLimit(true);
// $ExpectType void
placeSearch.setCityLimit();
// $ExpectType void
placeSearch.setPageIndex(1);
// $ExpectType void
placeSearch.setPageIndex();
// $ExpectType void
placeSearch.setPageSize(1);
// $ExpectType void
placeSearch.setPageSize();
// $ExpectType void
placeSearch.setCity('city');
// $ExpectType void
placeSearch.setCity();
// $ExpectType void
placeSearch.setLang(lang);
// $ExpectType void
placeSearch.setLang();
// $ExpectType "zh_cn" | "en" | "zh_en" | undefined
placeSearch.getLang();
// $ExpectType void
placeSearch.clear();
// $ExpectType void
placeSearch.poiOnAMAP({
id: 'id',
});
// $ExpectType void
placeSearch.poiOnAMAP({
location: lnglat,
id: 'id',
name: 'name'
});
// $ExpectType void
placeSearch.detailOnAMAP({
id: 'id',
});
// $ExpectType void
placeSearch.detailOnAMAP({
location: lnglat,
id: 'id',
name: 'name'
});
// $ExpectType void
placeSearch.open();
// $ExpectType void
placeSearch.close();
placeSearch.on('complete', (event: AMap.PlaceSearch.EventMap['complete']) => {
// $ExpectType "complete"
event.type;
// $ExpectType string
event.info;
// $ExpectType PoiList
event.poiList;
// $ExpectType string[] | undefined
event.keywordList;
// $ExpectType CityInfo[] | undefined
event.cityList;
});
placeSearch.on('listElementClick', (event: AMap.PlaceSearch.EventMap['listElementClick']) => {
// $ExpectType MouseEvent
event.event;
// $ExpectType string
event.id;
// $ExpectType number
event.index;
// $ExpectType Marker<any>
event.marker;
// $ExpectType HTMLLIElement
event.listElement;
});
placeSearch.on('markerClick', (event: AMap.PlaceSearch.EventMap['markerClick']) => {
const markerEvent = event.event;
// $ExpectType Marker<any>
markerEvent.target;
// $ExpectType string
event.id;
// $ExpectType number
event.index;
// $ExpectType Marker<any>
event.marker;
// $ExpectType HTMLLIElement
event.listElement;
});

View File

@@ -0,0 +1,737 @@
// Type definitions for non-npm package amap-js-api-place-search 1.4
// Project: https://lbs.amap.com/api/javascript-api/reference/search#m_AMap.PlaceSearch
// Definitions by: breeze9527 <https://github.com/breeze9527>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
// TypeScript Version: 2.8
/// <reference types="amap-js-api" />
declare namespace AMap {
namespace PlaceSearch {
interface EventMap {
complete: Event<'complete', SearchResult>;
error: Event<'error', { info: string }>;
selectChanged: Event<'selectChanged', {
selected: SelectChangeEventData | EventMap['markerClick'] | EventMap['listElementClick'];
lastSelected: SelectChangeEventData | EventMap['markerClick'] | EventMap['listElementClick'] | null;
}>;
listElementClick: SelectChangeEvent<'listElementClick', MouseEvent>;
markerClick: SelectChangeEvent<'markerClick', Marker.EventMap['click']>;
// internal
renderComplete: Event<'renderComplete', {
result: SelectChangeEventData[];
markers: Marker[];
listElements: HTMLElement[];
}>;
infoWindowClick: Event<'infoWindowClick', SelectChangeEventData & {
event: MouseEvent;
infoWindow: InfoWindow;
infoWindowContentDom: HTMLDivElement;
}>;
willClear: Event<'willClear', {
id: string;
index: number;
data: Poi[];
}>;
markerDestoryed: Event<'markerDestoryed', SelectChangeEventData>; // typo in source code
listElementDetroyed: Event<'listElementDetroyed', SelectChangeEventData>; // typo too
}
interface SelectChangeEventData {
/**
* 当前选中的POI的ID
*/
id: string;
/**
* 索引
*/
index: number;
/**
* 当前选中的POI对应的在地图中的Marker对象
*/
marker: Marker;
/**
* 当前选中的POI在结果面板中对应的列表项
*/
listElement: HTMLLIElement;
/**
* 当前选中的POI的信息
*/
data: Poi[];
}
type SelectChangeEvent<N extends string, E> = Event<N, SelectChangeEventData & {
event: E;
}>;
interface PoiPhoto {
/**
* 图片名称
*/
title: string;
/**
* 图片url
*/
url: string;
}
interface PoiBase {
/**
* 全局唯一ID
*/
id: string;
/**
* 名称
*/
name: string;
/**
* 兴趣点类型
*/
type: string;
/**
* 兴趣点经纬度
*/
location: LngLat | null;
/**
* 地址
*/
address: string;
/**
* 离中心点距离
*/
distance: number;
/**
* 电话
*/
tel: string;
shopinfo: string;
children?: any[]; // TODO Array<{location: LngLat | null}>
}
interface Groupbuy {
/**
* 团购标题
*/
title: string;
/**
* 团购分类代码
*/
type_code: string;
/**
* 团购分类
*/
type: string;
/**
* 团购详情
*/
detail: string;
/**
* 团购开始时间
*/
stime: string;
/**
* 团购结束时间
*/
etime: string;
/**
* 团购总量
*/
count: number;
/**
* 已卖出数量
*/
sold_num: number;
/**
* 原价
*/
original_price: number;
/**
* 折扣价
*/
groupbuy_price: number;
/**
* 折扣
*/
discount: number;
/**
* 取票地址
*/
ticket_address: string;
/**
* 取票电话
*/
ticket_tel: string;
/**
* 图片信息
*/
photos: PoiPhoto[];
/**
* 来源url
*/
url: string;
/**
* 来源标识
*/
provider: string;
}
interface Discount {
/**
* 优惠标题
*/
title: string;
/**
* 优惠详情
*/
detail: string;
/**
* 开始时间
*/
start_time: string;
/**
* 结束时间
*/
end_time: string;
/**
* 已卖出数量
*/
sold_num: number;
/**
* 图片信息列表
*/
photos: PoiPhoto[];
/**
* 来源url
*/
url: string;
/**
* 来源标识
*/
provider: string;
}
interface Cinema {
/**
* 简介
*/
intro: string;
/**
* 综合评分
*/
rating: string;
/**
* 信息来源
*/
deep_src: string;
/**
* 停车场设施
*/
parking: string;
/**
* 规范格式的营业时间
*/
opentime_GDF: string;
/**
* 非规范格式的营业时间
*/
opentime: string;
/**
* 图片信息列表
*/
photos: PoiPhoto[];
}
interface Dining {
/**
* 菜系
*/
cuisines: string;
/**
* 标签
*/
tag: string;
/**
* 简介
*/
intro: string;
/**
* 综合评分
*/
rating: string;
/**
* 单数据源的评分
*/
cp_rating: string;
/**
* 信息来源
*/
deep_src: string;
/**
* 口味评分
*/
taste_rating: string;
/**
* 环境评分
*/
environment_rating: string;
/**
* 服务评分
*/
service_rating: string;
/**
* 人均消费
*/
cost: string;
/**
* 特色菜
*/
recommend: string;
/**
* 氛围
*/
atmosphere: string;
/**
* 订餐wap链接
*/
ordering_wap_url: string;
/**
* 订餐web链接
*/
ordering_web_url: string;
/**
* 订餐APP URL
*/
ordering_app_url: string;
/**
* 规范格式的营业时间
*/
opentime_GDF: string;
/**
* 非规范格式的营业时间
*/
opentime: string;
/**
* 餐厅特色
*/
addition: string;
/**
* 图片信息列表
*/
photos: PoiPhoto[];
}
interface Scenic {
/**
* 简介
*/
intro: string;
/**
* 综合评分
*/
rating: string;
/**
* 信息来源
*/
deep_src: string;
/**
* 景区国标级别
*/
level: string;
/**
* 门票价格
*/
price: string;
/**
* 适合游玩的季节
*/
season: string;
/**
* 推荐景点
*/
recommend: string;
/**
* 景区主题
*/
theme: string;
/**
* wap购票链接
*/
ordering_wap_url: string;
/**
* web购票链接
*/
ordering_web_url: string;
/**
* 规范格式的营业时间
*/
opentime_GDF: string;
/**
* 非规范格式的营业时间
*/
opentime: string;
/**
* 图片信息列表
*/
photos: PoiPhoto[];
}
interface Hotel {
/**
* 综合评分
*/
rating: string;
/**
* 星级
*/
star: string;
/**
* 简介
*/
intro: string;
/**
* 最低房价
*/
lowest_price: string;
/**
* 设施评分
*/
faci_rating: string;
/**
* 卫生评分
*/
health_rating: string;
/**
* 环境评分
*/
environment_rating: string;
/**
* 服务评分
*/
service_rating: string;
/**
* 交通提示
*/
traffic: string;
/**
* 特色服务
*/
addition: string;
/**
* 信息来源
*/
deep_src: string;
/**
* 图片信息列表
*/
photos: PoiPhoto[];
}
type PoiExt = PoiBase & {
/**
* 网址
*/
website: string;
/**
* 所在省份编码
*/
pcode: string;
/**
* 所在城市编码
*/
citycode: string;
/**
* 所在区域编码
*/
adcode: string;
/**
* 邮编
*/
postcode: string;
/**
* 所在省份
*/
pname: string;
/**
* 所在城市名称
*/
cityname: string;
/**
* 所在行政区名称
*/
adname: string;
/**
* 电子邮箱
*/
email: string;
/**
* 照片
*/
photos: PoiPhoto[];
/**
* 入口经纬度
*/
entr_location: LngLat | null;
/**
* 出口经纬度
*/
exit_location: LngLat | null;
/**
* @deprecated 是否有团购信息
*/
groupbuy: boolean;
/**
* @deprecated 是否有优惠信息
*/
discount: boolean;
} & ({
indoor_map: true;
indoor_data: {
cpid: string;
floor: string;
truefloor: string;
};
} | {
indoor_map: false;
}) & {
/**
* @deprecated 团购信息
*/
groupbuys?: Groupbuy[];
/**
* @deprecated 优惠信息
*/
discounts?: Discount[];
} & ({
deep_type: 'CINEMA';
/**
* @deprecated 影院类深度信息
*/
cinema: Cinema;
} | {
deep_type: 'DINING';
/**
* @deprecated 餐饮类深度信息
*/
dining: Dining;
} | {
deep_type: 'SCENIC';
/**
* @deprecated 景点类深度信息
*/
scenic: Scenic;
} | {
deep_type: 'HOTEL';
/**
* @deprecated 酒店类深度信息
*/
hotel: Hotel;
});
interface Options {
/**
* 兴趣点城市
*/
city?: string;
/**
* 是否强制限制在设置的城市内搜索
*/
citylimit?: boolean;
/**
* 是否按照层级展示子POI数据
* children=1展示子节点POI数据children=0不展示子节点数据
*/
children?: number;
/**
* 兴趣点类别,多个类别用“|”分割
*/
type?: string;
/**
* 检索语言类型
*/
lang?: Lang;
/**
* 单页显示结果条数
*/
pageSize?: number;
/**
* 页码
*/
pageIndex?: number;
/**
* 是否返回详细信息
* base返回基本地址信息all返回基本+详细信息
*/
extensions?: 'base' | 'all';
/**
* Map对象
*/
map?: Map;
/**
* 结果列表的HTML容器id或容器元素
*/
panel?: string | HTMLElement;
/**
* 是否在地图上显示周边搜索的圆或者范围搜索的多边形
*/
showCover?: boolean;
/**
* 绘制的UI风格
*/
renderStyle?: 'newpc' | 'default';
/**
* 是否自动调整地图视野使绘制的Marker点都处于视口的可见范围
*/
autoFitView?: boolean;
// internal
renderEngine?: string;
rankBy?: string;
}
interface PoiList {
/**
* Poi列表
*/
pois: Poi[]; // PlaceSearchPoiBase[] | PlaceSearchPoiExt[];
/**
* 页码
*/
pageIndex: number;
/**
* 单页结果数
*/
pageSize: number;
/**
* 查询结果总数
*/
count: number;
}
interface CityInfo {
/**
* 建议城市名称
*/
name: string;
/**
* 城市编码
*/
citycode: string;
/**
* 行政区编码
*/
adcode: string;
/**
* 该城市的建议结果数目
*/
count: number;
}
interface SearchResult {
/**
* 成功状态说明
*/
info: string;
/**
* 兴趣点列表
*/
poiList: PoiList;
/**
* 建议关键字列表
*/
keywordList?: string[];
/**
* 城市建议列表
*/
cityList?: CityInfo[];
}
type Poi = PoiBase | PoiExt;
type SearchStatus = 'complete' | 'error' | 'no_data';
}
class PlaceSearch extends EventEmitter {
/**
* 地点搜索服务
* @param options 选项
*/
constructor(options?: PlaceSearch.Options);
/**
* 根据关键字搜索
* @param keyword 根据关键字搜索
* @param callback 回调
*/
search(
keyword: string,
callback: (status: PlaceSearch.SearchStatus, result: string | PlaceSearch.SearchResult) => void
): void;
/**
* 周边查询
* @param keyword 关键字
* @param center 搜索中心
* @param radius 搜索半径
* @param callback 回调
*/
searchNearBy(
keyword: string,
center: LocationValue,
radius: number,
callback: (status: PlaceSearch.SearchStatus, result: string | PlaceSearch.SearchResult) => void
): void;
/**
* 根据范围和关键词进行范围查询
* @param keyword 关键字
* @param bounds 搜索范围
* @param callback 回调
*/
searchInBounds(
keyword: string,
bounds: Bounds | Polygon,
callback: (status: PlaceSearch.SearchStatus, result: string | PlaceSearch.SearchResult) => void
): void;
/**
* 根据POIID 查询POI 详细信息
* @param POIID POIID
* @param callback 搜索回调
*/
getDetails(
POIID: string,
callback: (status: PlaceSearch.SearchStatus, result: string | PlaceSearch.SearchResult) => void
): void;
/**
* 设置查询类别
* @param type 查询类别
*/
setType(type?: string): void;
/**
* 设置是否强制限制城市
* @param limit 是否强制限制城市
*/
setCityLimit(limit?: boolean): void;
/**
* 设置查询结果特定页数
* @param pageIndex 页码
*/
setPageIndex(pageIndex?: number): void;
/**
* 设置查询单页结果数
* @param pageSize 结果数
*/
setPageSize(pageSize?: number): void;
/**
* 设置查询城市
* @param city 城市
*/
setCity(city?: string): void;
/**
* 设置检索语言类型
* @param lang 语言类型
*/
setLang(lang?: Lang): void;
/**
* 获取检索语言类型
*/
getLang(): Lang | undefined;
/**
* 清除搜索结果
*/
clear(): void;
/**
* 唤起高德地图客户端marker页
* @param obj 唤起参数
*/
poiOnAMAP(obj: { location?: LocationValue; id: string; name?: string; }): void;
/**
* 唤起高德地图客户端POI详情页
* @param obj 唤起参数
*/
detailOnAMAP(obj: { location?: LocationValue; id: string; name?: string; }): void;
// internal
open(): void;
close(): void;
}
}

View File

@@ -0,0 +1,24 @@
{
"compilerOptions": {
"module": "commonjs",
"lib": [
"es6",
"dom"
],
"noEmit": true,
"noImplicitAny": true,
"noImplicitThis": true,
"strictNullChecks": true,
"strictFunctionTypes": true,
"baseUrl": "../",
"typeRoots": [
"../"
],
"types": [],
"forceConsistentCasingInFileNames": true
},
"files": [
"index.d.ts",
"amap-js-api-place-search-tests.ts"
]
}

View File

@@ -2415,6 +2415,7 @@ const testInfoWindow = new AMap.InfoWindow<InfoWindowExtraData>({
closeWhenClickMap: false,
content: 'content',
size: [100, 100],
anchor: 'bottom-center',
offset: new AMap.Pixel(10, 10),
position: lnglat,
showShadow: true
@@ -2449,6 +2450,20 @@ testInfoWindow.setPosition(lnglatTuple);
// $ExpectType LngLat | undefined
testInfoWindow.getPosition();
const testInfoWindowAnchor = testInfoWindow.getAnchor();
if (testInfoWindowAnchor !== undefined) {
// $ExpectType Anchor
testInfoWindowAnchor;
} else {
// $ExpectType undefined
testInfoWindowAnchor;
}
// $ExpectType void
testInfoWindow.setAnchor();
// $ExpectType void
testInfoWindow.setAnchor(testInfoWindowAnchor);
// $ExpectType Size | undefined
testInfoWindow.getSize();
@@ -2491,6 +2506,7 @@ new AMap.Marker({});
export const testMarker = new AMap.Marker<MarkerExtraData>({
map,
position: lnglat,
anchor: 'bottom-center',
offset: pixel,
icon: 'iconUrl',
content: 'htmlString',
@@ -2526,6 +2542,20 @@ testMarker.markOnAMAP({
name: '123'
});
const testMarkerAnchor = testMarker.getAnchor();
if (testMarkerAnchor) {
// $ExpectType Anchor
testMarkerAnchor;
} else {
// $ExpectType undefined
testMarkerAnchor;
}
// $ExpectType void
testMarker.setAnchor(testMarkerAnchor);
// $ExpectType void
testMarker.setAnchor();
// $ExpectType Pixel
testMarker.getOffset();
@@ -3229,6 +3259,7 @@ const testText = new AMap.Text<TextExtraData>({
verticalAlign: 'top',
map,
position: lnglat,
anchor: 'bottom-center',
offset: pixel,
topWhenClick: true,
bubble: true,
@@ -3246,6 +3277,20 @@ const testText = new AMap.Text<TextExtraData>({
extData: { test: 1 }
});
const testTextAnchor = testText.getAnchor();
if (testTextAnchor) {
// $ExpectType Anchor
testTextAnchor;
} else {
// $ExpectType undefined
testTextAnchor;
}
// $ExpectType void
testText.setAnchor(testTextAnchor);
// $ExpectType void
testText.setAnchor();
// $ExpectType string
testText.getText();
@@ -3363,7 +3408,7 @@ testText.setShadow(icon);
testText.setShadow('shadow url');
// $ExpectType void
testText.setExtData({test: 1});
testText.setExtData({ test: 1 });
// $ExpectType {} | TextExtraData
testText.getExtData();

View File

@@ -2,7 +2,12 @@ declare namespace AMap {
class ArrayBounds {
constructor(bounds: LocationValue[]);
bounds: LngLat[];
/**
* 判断传入的点是否在ArrayBounds内
* @param point 目标点
*/
contains(point: LocationValue): boolean;
// internal
toBounds(): Bounds;
getCenter(): LngLat;

View File

@@ -1,12 +1,39 @@
declare namespace AMap {
class Bounds {
/**
* 地物对象的经纬度矩形范围。
* @param southWest 西南角经纬度
* @param northEast 东北角经纬度
*/
constructor(southWest: LngLat, northEast: LngLat);
/**
* 指定点坐标是否在矩形范围内
* @param point 制定坐标
*/
contains(point: LocationValue): boolean;
/**
* 获取当前Bounds的中心点经纬度坐标
*/
getCenter(): LngLat;
/**
* 获取西南角坐标
*/
getSouthWest(): LngLat;
/**
* 获取东南角坐标
*/
getSouthEast(): LngLat;
/**
* 获取东北角坐标
*/
getNorthEast(): LngLat;
/**
* 获取西北角坐标
*/
getNorthWest(): LngLat;
/**
* 以字符串形式返回地物对象的矩形范围
*/
toString(): string;
}
}

View File

@@ -1,51 +1,192 @@
declare namespace AMap {
namespace Browser {
/**
* 当前浏览器userAgent
*/
const ua: string;
/**
* 是否移动设备
*/
const mobile: boolean;
/**
* 平台类型,如:'windows'、'mac'、'ios'、'android'、'other'
*/
const plat: 'android' | 'ios' | 'windows' | 'mac' | 'other';
/**
* 是否mac设备
*/
const mac: boolean;
/**
* 是否windows设备
*/
const windows: boolean;
/**
* 是否iOS设备
*/
const ios: boolean;
/**
* 是否iPad
*/
const iPad: boolean;
/**
* 是否iPhone
*/
const iPhone: boolean;
/**
* 是否安卓设备
*/
const android: boolean;
/**
* 是否安卓4以下系统
*/
const android23: boolean;
/**
* 是否Chrome浏览器
*/
const chrome: boolean;
/**
* 是否火狐浏览器
*/
const firefox: boolean;
/**
* 是否Safari浏览器
*/
const safari: boolean;
/**
* 是否微信
*/
const wechat: boolean;
/**
* 是否UC浏览器
*/
const uc: boolean;
/**
* 是否QQ或者QQ浏览器
*/
const qq: boolean;
/**
* 是否IE
*/
const ie: boolean;
/**
* 是否IE6
*/
const ie6: boolean;
/**
* 是否IE7
*/
const ie7: boolean;
/**
* 是否IE8
*/
const ie8: boolean;
/**
* 是否IE9
*/
const ie9: boolean;
/**
* 是否IE10
*/
const ie10: boolean;
/**
* 是否IE11
*/
const ie11: boolean;
/**
* 是否Edge浏览器
*/
const edge: boolean;
/**
* 是否IE9以下
*/
const ielt9: boolean;
/**
* 是否百度浏览器
*/
const baidu: boolean;
/**
* 是否支持LocaStorage
*/
const isLocalStorage: boolean;
/**
* 是否支持Geolocation
*/
const isGeolocation: boolean;
/**
* 是否Webkit移动浏览器
*/
const mobileWebkit: boolean;
/**
* 是否支持Css3D的Webkit移动端浏览器
*/
const mobileWebkit3d: boolean;
/**
* 是否Opera移动浏览器
*/
const mobileOpera: boolean;
/**
* 是否高清屏幕devicePixelRatio>1
*/
const retina: boolean;
/**
* 是否触屏
*/
const touch: boolean;
/**
* 是否msPointer设备
*/
const msPointer: boolean;
/**
* 是否pointer设备
*/
const pointer: boolean;
/**
* 是否webkit浏览器
*/
const webkit: boolean;
/**
* 是否支持Css3D的ie浏览器
*/
const ie3d: boolean;
/**
* 是否支持Css3D的Webkit浏览器
*/
const webkit3d: boolean;
/**
* 是否支持Css3D的gecko浏览器
*/
const gecko3d: boolean;
/**
* 是否支持Css3D的opera浏览器
*/
const opera3d: boolean;
/**
* 是否支持Css3D的浏览器
*/
const any3d: boolean;
/**
* 是否支持canvas
*/
const isCanvas: boolean;
/**
* 是否支持svg
*/
const isSvg: boolean;
/**
* 是否支持vml
*/
const isVML: boolean;
/**
* 是否支持WebWorker
*/
const isWorker: boolean;
/**
* 是否支持WebSocket
*/
const isWebsocket: boolean;
/**
* 判断是否支持webgl
*/
function isWebGL(): boolean;
}
}

View File

@@ -9,8 +9,17 @@ declare namespace AMap {
: V extends undefined ? {}
: { value: V });
type MapsEvent<N extends string, I> = Event<N, {
/**
* 经纬度坐标
*/
lnglat: LngLat;
/**
* 像素坐标
*/
pixel: Pixel;
/**
* 触发对象
*/
target: I
}>;

View File

@@ -1,12 +1,24 @@
declare namespace AMap {
namespace convertFrom {
interface Result {
/**
* 成功状态文字描述
*/
info: string; // 'ok'
/**
* 高德坐标集合
*/
locations: LngLat[];
}
type Type = 'gps' | 'baidu' | 'mapbar';
type SearchStatus = 'complete' | 'error';
}
/**
* 为坐标转换类,支持将其他坐标系的坐标点转换为高德坐标系。
* @param lnglat 待转换坐标
* @param type 用于说明是哪个服务商的坐标
* @param callback 转换完成后的回调函数
*/
function convertFrom(
lnglat: LocationValue | LocationValue[],
type: convertFrom.Type | null,

View File

@@ -1,31 +1,78 @@
declare namespace AMap {
namespace DomUtil {
/**
* 获取DOM元素的大小
* @param dom DOM元素
*/
function getViewport(dom: HTMLElement): Size;
/**
* 获取DOM元素距离窗口左上角的距离
* @param dom DOM元素
*/
function getViewportOffset(dom: HTMLElement): Pixel;
/**
* 在parentNode内部创建一个className类名的tagName元素
* @param tagName 标签名称
* @param parent 父节点
* @param className 类名
*/
function create<K extends keyof HTMLElementTagNameMap>(
tagName: K,
parent?: HTMLElement,
className?: string
): HTMLElementTagNameMap[K];
/**
* 给DOM元素设置为className样式
* @param dom DOM元素
* @param className 类名
*/
function setClass(dom: HTMLElement, className?: string): void;
/**
* DOM元素是否包含className
* @param dom DOM元素
* @param className 类名
*/
function hasClass(dom: HTMLElement, className: string): boolean;
/**
* 给DOM元素添加一个className
* @param dom DOM元素
* @param className 类名
*/
function addClass(dom: HTMLElement, className: string): void;
/**
* 给DOM元素删除一个className
* @param dom DOM元素
* @param className 类名
*/
function removeClass(dom: HTMLElement, className: string): void;
/**
* 给DOM元素设定一个透明度
* @param dom DOM元素
* @param opacity 透明度(0-1)
*/
function setOpacity(dom: HTMLElement, opacity: number): void;
/**
* 给DOM元素旋转一个角度以center为中心center以元素左上角为坐标原点
* @param dom DOM元素
* @param deg 旋转角度
* @param origin 旋转中心
*/
function rotate(dom: HTMLElement, deg: number, origin?: { x: number, y: number }): void;
/**
* 给DOM元素删除一组样式Object同样式表
* @param dom DOM元素
* @param style 样式
*/
function setCss(dom: HTMLElement | HTMLElement[], style: Partial<CSSStyleDeclaration>): typeof DomUtil; // this
/**
* 清空DOM元素
* @param dom DOM元素
*/
function empty(dom: HTMLElement): void;
/**
* 将DOM元素从父节点删除
* @param dom DOM元素
*/
function remove(dom: HTMLElement): void;
}
}

View File

@@ -1,5 +1,13 @@
declare namespace AMap {
abstract class EventEmitter {
/**
* 注册事件
* @param eventName 事件名称
* @param handler 事件回调函数
* @param context 事件回调中的上下文
* @param once 触发一次
* @param unshift 更改事件顺序
*/
on<E extends Event, C = this>(
eventName: string,
// tslint:disable-next-line:no-unnecessary-generics
@@ -8,14 +16,23 @@ declare namespace AMap {
once?: boolean,
unshift?: boolean
): this;
/**
* 移除事件绑定
* @param eventName 事件名称
* @param handler 事件功能函数
* @param context 事件上下文
*/
off<E extends Event, C = this>(
eventName: string,
// tslint:disable-next-line
handler: ((this: C, event: E) => void) | 'mv',
context?: C
): this;
/**
* 触发事件
* @param eventName 事件名称
* @param data 事件数据
*/
emit(eventName: string, data?: any): this;
}
@@ -23,7 +40,13 @@ declare namespace AMap {
interface EventListener<T extends 0 | 1> {
type: T;
}
/**
* 注册DOM对象事件
* @param instance 需注册事件的DOM对象
* @param eventName 事件名称
* @param handler 事件功能函数
* @param context 事件上下文
*/
function addDomListener<N extends keyof HTMLElementTagNameMap, E extends keyof HTMLElementEventMap, C = HTMLElementTagNameMap[N]>(
// tslint:disable-next-line: no-unnecessary-generics
instance: HTMLElementTagNameMap[N],
@@ -31,7 +54,13 @@ declare namespace AMap {
handler: (this: C, event: HTMLElementEventMap[E]) => void,
context?: C
): EventListener<0>;
/**
* 给对象注册事件
* @param instance 需注册事件的对象
* @param eventName 事件名称
* @param handler 事件功能函数
* @param context 事件上下文
*/
function addListener<I extends EventEmitter, E extends Event, C = I>(
// tslint:disable-next-line: no-unnecessary-generics
instance: I,
@@ -41,7 +70,13 @@ declare namespace AMap {
// tslint:disable-next-line: no-unnecessary-generics
context?: C
): EventListener<1>;
/**
* 给对象注册一次性事件
* @param instance 需注册事件的对象
* @param eventName 事件名称
* @param handler 事件功能函数
* @param context 事件上下文
*/
function addListenerOnce<I extends EventEmitter, E extends Event, C = I>(
// tslint:disable-next-line: no-unnecessary-generics
instance: I,
@@ -51,9 +86,17 @@ declare namespace AMap {
// tslint:disable-next-line: no-unnecessary-generics
context?: C
): EventListener<1>;
/**
* 删除事件
* @param listener 侦听器
*/
function removeListener(listener: EventListener<0 | 1>): void;
/**
* 触发非DOM事件
* @param instance 触发对象
* @param eventName 事件名称
* @param data 事件数据
*/
function trigger(instance: EventEmitter, eventName: string, data?: any): void;
}
}

View File

@@ -1,106 +1,176 @@
declare namespace AMap {
namespace GeometryUtil {
/**
* 计算两个经纬度点之间的实际距离
*/
function distance(
point1: LocationValue,
point2: LocationValue | LocationValue[]
): number;
/**
* 计算一个经纬度路径围成区域的实际面积
*/
function ringArea(ring: LocationValue[]): number;
/**
* 判断一个经纬度路径是否为顺时针
*/
function isClockwise(path: LocationValue[]): boolean;
/**
* 计算一个经纬度路径的实际长度
*/
function distanceOfLine(line: LocationValue[]): number;
/**
* 计算两个经纬度面的交叉区域
*/
function ringRingClip(
ring1: LocationValue[],
ring2: LocationValue[]
): Array<[number, number]>;
/**
* 判断两个经纬度面是否交叉
*/
function doesRingRingIntersect(
ring1: LocationValue[],
ring2: LocationValue[]
): boolean;
/**
* 判断经纬度路径和经纬度面是否交叉
*/
function doesLineRingIntersect(
line: LocationValue[],
ring: LocationValue[]
): boolean;
/**
* 判断两个经纬度路径是否相交
*/
function doesLineLineIntersect(
line1: LocationValue[],
line2: LocationValue[]
): boolean;
/**
* 判断线段和多个环是否相交
*/
function doesSegmentPolygonIntersect(
point1: LocationValue,
point2: LocationValue,
polygon: LocationValue[][]
): boolean;
/**
* 判断线段和一个环是否相交
*/
function doesSegmentRingIntersect(
point1: LocationValue,
point2: LocationValue,
ring: LocationValue[]
): boolean;
/**
* 判断线段和一个路径是否相交
*/
function doesSegmentLineIntersect(
point1: LocationValue,
point2: LocationValue,
line: LocationValue[]
): boolean;
/**
* 判断两个线段是否相交
*/
function doesSegmentsIntersect(
point1: LocationValue,
point2: LocationValue,
point3: LocationValue,
point4: LocationValue
): boolean;
/**
* 判断点是否在环内
*/
function isPointInRing(point: LocationValue, ring: LocationValue[]): boolean;
/**
* 判断环是否在另一个环内
*/
function isRingInRing(ring1: LocationValue[], ring2: LocationValue[]): boolean;
/**
* 判断点是否在多个环组成区域内
*/
function isPointInPolygon(point: LocationValue, polygon: LocationValue[][]): boolean;
/**
* 判断点是否在多个环组成区域内
*/
function makesureClockwise(path: Array<[number, number]>): Array<[number, number]>;
/**
* 将一个路径变为逆时针
*/
function makesureAntiClockwise(path: Array<[number, number]>): Array<[number, number]>;
/**
* 计算P2P3上距离P1最近的点
* @param point1 P1
* @param point2 P2
* @param point3 P3
*/
function closestOnSegment(
point1: LocationValue,
point2: LocationValue,
point3: LocationValue
): [number, number];
/**
* 计算line上距离P最近的点
*/
function closestOnLine(point: LocationValue, line: LocationValue[]): [number, number];
/**
* 计算P2P3到P1的距离
* @param point1 P1
* @param point2 P2
* @param point3 P3
*/
function distanceToSegment(
point1: LocationValue,
point2: LocationValue,
point3: LocationValue
): number;
/**
* 计算P到line的距离
*/
function distanceToLine(point: LocationValue, line: LocationValue[]): number;
/**
* 判断P1是否在P2P3上
* @param point1 P1
* @param point2 P2
* @param point3 P3
* @param tolerance 误差范围
*/
function isPointOnSegment(
point1: LocationValue,
point2: LocationValue,
point3: LocationValue,
tolerance?: number
): boolean;
/**
* 判断P是否在line上
* @param point 点P
* @param line 线
* @param tolerance 误差范围
*/
function isPointOnLine(
point: LocationValue,
line: LocationValue[],
tolerance?: number
): boolean;
/**
* 判断P是否在ring的边上
* @param point 点P
* @param ring 环
* @param tolerance 误差范围
*/
function isPointOnRing(
point: LocationValue,
ring: LocationValue[],
tolerance?: number
): boolean;
/**
* 判断P是否在多个ring的边上
* @param point 点P
* @param polygon 多边形
* @param tolerance 误差范围
*/
function isPointOnPolygon(
point: LocationValue,
polygon: LocationValue[][],

View File

@@ -1,11 +1,27 @@
declare namespace AMap {
namespace Buildings {
interface Options extends Layer.Options {
/**
* 可见级别范围
*/
zooms?: [number, number];
/**
* 不透明度
*/
opacity?: number;
/**
* 高度比例系数可控制3D视图下的楼块高度
*/
heightFactor?: number;
/**
* 是否可见
*/
visible?: boolean;
/**
* 层级
*/
zIndex?: number;
// inner
merge?: boolean;
sort?: boolean;
@@ -24,7 +40,15 @@ declare namespace AMap {
}
class Buildings extends Layer {
/**
* 楼块图层,单独展示矢量化的楼块图层
* @param opts 图层选项
*/
constructor(opts?: Buildings.Options);
/**
* 按区域设置楼块的颜色
* @param style 颜色设置
*/
setStyle(style: Buildings.Style): void;
}
}

View File

@@ -2,6 +2,14 @@ declare namespace AMap {
namespace TileLayer {
namespace Flexible {
interface Options extends TileLayer.Options {
/**
* 创建切片回调
* @param x 横坐标
* @param y 纵坐标
* @param z 层级
* @param success 成功回调
* @param fail 失败回调
*/
createTile?(
x: number,
y: number,
@@ -9,11 +17,21 @@ declare namespace AMap {
success: (tile: HTMLImageElement | HTMLCanvasElement) => void,
fail: () => void
): void;
/**
* 内存中缓存的切片的数量上限
*/
cacheSize?: number;
/**
* 是否显示
*/
visible?: boolean;
}
}
class Flexible extends TileLayer {
/**
* 灵活切片图层
* @param options 图层选项
*/
constructor(options?: Flexible.Options);
}
}

View File

@@ -1,20 +1,56 @@
declare namespace AMap {
namespace Layer {
interface Options {
/**
* 所属的地图对象
*/
map?: Map;
}
}
abstract class Layer extends EventEmitter {
/**
* 图层获取DOM节点
*/
getContainer(): HTMLDivElement | undefined;
/**
* 获取图层缩放范围
*/
getZooms(): [number, number];
/**
* 设置透明度
* @param alpha 透明度
*/
setOpacity(alpha: number): void;
/**
* 设置透明度
*/
getOpacity(): number;
/**
* 显示图层
*/
show(): void;
/**
* 隐藏图层
*/
hide(): void;
/**
* 设置图层所属地图
* @param map map对象
*/
setMap(map?: Map | null): void;
/**
* 获取图层所属地图
*/
getMap(): Map | null | undefined;
/**
* 设置图层的层级
* @param index 层级
*/
setzIndex(index: number): void;
/**
* 获取图层的层级
*/
getzIndex(): number;
}
}

View File

@@ -1,14 +1,49 @@
declare namespace AMap {
class LayerGroup<L = any> extends Layer {
/**
* 图层集合
* @param layers 集合中的图层
*/
constructor(layers: L | L[]);
/**
* 添加单个图层到集合中,不支持添加重复的图层
* @param layer 图层
*/
addLayer(layer: L | L[]): this;
/**
* 添加图层数组到集合中,不支持添加重复的图层
* @param layers 图层数组
*/
addLayers(layers: L | L[]): this;
/**
* 返回当前集合中所有的图层
*/
getLayers(): L[];
getLayer(finder: (this: null, item: L, index: number, list: L[]) => boolean): L | null;
/**
* 判断传入的图层实例是否在集合中
* @param layer 目标图层
*/
hasLayer(layer: L | ((this: null, item: L, index: number, list: L[]) => boolean)): boolean;
/**
* 从集合中删除传入的图层实例
* @param layer 图层
*/
removeLayer(layer: L | L[]): this;
removeLayers(layer: L | L[]): this;
/**
* 从集合中删除传入的图层实例数组
* @param layers 图层数组
*/
removeLayers(layers: L | L[]): this;
/**
* 清空集合
*/
clearLayers(): this;
/**
* 对集合中的图层做迭代操作
* @param iterator 迭代回调
* @param context 执行上下文
*/
eachLayer<C = L>(iterator: (this: C, layer: L, index: number, list: L[]) => void, context?: C): void;
// overwrite

View File

@@ -12,21 +12,51 @@ declare namespace AMap {
}
interface Style {
/**
* 图标显示位置偏移量以图标的左上角为基准点0,0
*/
anchor: Pixel;
/**
* 图标的地址
*/
url: string;
/**
* 图标的尺寸
*/
size: Size;
/**
* 旋转角度
*/
rotation?: number;
}
type UIEvent<N extends string, I> = Event<N, {
/**
* 事件触发目标
*/
target: I;
/**
* 目标点的数据
*/
data: I extends MassMarks<infer D> ? D : Data;
}>;
interface Options extends Layer.Options {
/**
* 显示层级
*/
zIndex?: number;
/**
* 指针样式
*/
cursor?: string;
/**
* 是否在拖拽缩放过程中实时重绘
*/
alwayRender?: boolean;
/**
* 设置点的样式
*/
style: Style | Style[];
// rejectMapMask
}
@@ -37,11 +67,33 @@ declare namespace AMap {
}
class MassMarks<D extends MassMarks.Data = MassMarks.Data> extends Layer {
/**
* 海量点类,利用该类可同时在地图上展示万级别的点
* @param data 点对象数组或url
* @param opts 选项
*/
constructor(data: D[] | string, opts: MassMarks.Options);
/**
* 设置显示样式
* @param style 样式设置
*/
setStyle(style: MassMarks.Style | MassMarks.Style[]): void;
/**
* 获取显示样式
*/
getStyle(): MassMarks.Style | MassMarks.Style[];
/**
* 设置数据集
* @param data 数据集
*/
setData(data: D[] | string): void;
/**
* 获取数据集
*/
getData(): Array<Pick<D, Exclude<keyof D, 'lnglat'>> & { lnglat: LngLat }>;
/**
* 清除海量点
*/
clear(): void;
}
}

View File

@@ -1,35 +1,94 @@
declare namespace AMap {
namespace MediaLayer {
interface Options extends Layer.Options {
/**
* 显示范围
*/
bounds?: Bounds;
/**
* 是否可见
*/
visible?: boolean;
/**
* 缩放范围
*/
zooms?: [number, number];
/**
* 透明度
*/
opacity?: number;
}
}
abstract class MediaLayer<E extends HTMLElement> extends Layer {
/**
* @param options 图层选项
*/
constructor(options?: MediaLayer.Options);
/**
* 设置显示范围
* @param bounds 显示范围
*/
setBounds(bounds: Bounds): void;
/**
* 获取显示的范围
*/
getBounds(): Bounds;
/**
* 设置图层选项
* @param options 图层选项
*/
setOptions(options: Partial<MediaLayer.Options>): void;
/**
* 获取图层选项
*/
getOptions(): Partial<MediaLayer.Options>;
/**
* 获取元素
*/
getElement(): E | null;
}
/**
* 图片图层
*/
class ImageLayer extends MediaLayer<HTMLImageElement> {
/**
* 修改Image的Url
* @param url url
*/
setImageUrl(url: string): void;
/**
* 返回Image的Url
*/
getImageUrl(): string | undefined;
}
class VideoLayer extends MediaLayer<HTMLVideoElement> {
/**
* 修改Video的Url
* @param source url
*/
setVideoUrl(source: string | string[]): void;
/**
* 返回Video的Url
*/
getVideoUrl(): string | string[] | undefined;
}
class CanvasLayer extends MediaLayer<HTMLCanvasElement> {
/**
* 修改显示的Canvas
* @param canvas Canvas对象
*/
setCanvas(canvas: HTMLCanvasElement): void;
/**
* 返回Canvas对象
*/
getCanvas(): HTMLCanvasElement | undefined;
/**
* 当canvas的内容发生改变是用于刷新图层
*/
reFresh(): void;
}
}

View File

@@ -5,33 +5,87 @@ declare namespace AMap {
}
interface Options extends Layer.Options {
/**
* 切片大小
*/
tileSize?: number;
/**
* 切片取图地址(自1.3版本起该属性与getTileUrl属性合并)
*/
tileUrl?: string;
/**
* 取图错误时的代替地址
*/
errorUrl?: string;
/**
* 获取图块取图地址
*/
getTileUrl?: string | ((x: number, y: number, level: number) => string);
/**
* 图层叠加的顺序值
*/
zIndex?: number;
/**
* 图层的透明度
*/
opacity?: number;
/**
* 支持的缩放级别范围
*/
zooms?: [number, number];
/**
* 是否在高清屏下进行清晰度适配
*/
detectRetina?: boolean;
}
/**
* 卫星图层
*/
class Satellite extends TileLayer { }
/**
* 路网图层
*/
class RoadNet extends TileLayer { }
namespace Traffic {
interface Options extends TileLayer.Options {
/**
* 是否设置可以自动刷新实时路况信息
*/
autoRefresh?: boolean;
/**
* 设置刷新间隔时长
*/
interval?: number;
}
}
class Traffic extends TileLayer {
/**
* 实时交通图层
* @param options 图层选项
*/
constructor(options?: Traffic.Options);
}
}
class TileLayer extends Layer {
/**
* 切片图层
* @param options 图层选项
*/
constructor(options?: TileLayer.Options);
/**
* 获取当前图层所有切片号
*/
getTiles(): string[];
/**
* 重新加载此图层
*/
reload(): void;
/**
* 设置图层的取图地址
* @param url 取图地址
*/
setTileUrl(url: string | ((x: number, y: number, level: number) => string)): void;
}
}

View File

@@ -13,16 +13,43 @@ declare namespace AMap {
ELEVATION?: string;
}
interface Options extends Flexible.Options {
/**
* wms服务的url地址
*/
url: string;
/**
* OGC标准的WMS地图服务的GetMap接口的参数
*/
params: Params;
/**
* 地图级别切换时,不同级别的图片是否进行混合
*/
blend?: boolean;
}
}
class WMS extends Flexible {
/**
* WMS图层
* @param options 图层选项
*/
constructor(options: WMS.Options);
/**
* 设置wms服务地址
* @param url 服务地址
*/
setUrl(url: string): void;
/**
* 返回wms服务地址
*/
getUrl(): string;
/**
* 设置OGC标准的WMS getMap接口的参数
* @param params 接口参数
*/
setParams(params: WMS.Params): void;
/**
* 返回OGC标准的WMS getMap接口的参数
*/
getParams(): WMS.Params;
}
}

View File

@@ -8,17 +8,44 @@ declare namespace AMap {
Format?: string;
}
interface Options extends Flexible.Options {
/**
* wmts服务的url地址
*/
url: string;
/**
* OGC标准的WMTS地图服务的GetTile接口的参数
*/
params: Params;
/**
* 地图级别切换时,不同级别的图片是否进行混合
*/
blend?: boolean;
}
}
class WMTS extends Flexible {
/**
* WMTS图层
* @param options 图层选项
*/
constructor(options: WMTS.Options);
/**
* 设置wmts服务地址
* @param url 服务地址
*/
setUrl(url: string): void;
/**
* 返回wmts服务地址
*/
getUrl(): string;
/**
* 设置OGC标准的WMTS getTile接口的参数
* @param params 接口参数
*/
setParams(params: WMTS.Params): void;
/**
* 返回OGC标准的WMTS getTile接口的参数
*/
getParams(): WMTS.Params;
}
}

View File

@@ -1,11 +1,39 @@
declare namespace AMap {
class LngLat {
/**
* 构造一个地理坐标对象
* @param lng 经度
* @param lat 纬度
* @param noAutofix 是否自动修正
*/
constructor(lng: number, lat: number, noAutofix?: boolean);
/**
* 移动当前经纬度坐标得到新的坐标
* @param east 移动经度,向右为正值
* @param north 移动维度,向上为正值
*/
offset(east: number, north: number): LngLat;
/**
* 当前经纬度和传入经纬度或者经纬度数组连线之间的地面距离,单位为米
* @param lnglat 对比目标
*/
distance(lnglat: LngLat | LngLat[]): number;
/**
* 获取经度值
*/
getLng(): number;
/**
* 获取纬度值
*/
getLat(): number;
/**
* 判断当前坐标对象与传入坐标对象是否相等
* @param lnglat 判断目标
*/
equals(lnglat: LngLat): boolean;
/**
* 以字符串的形式返回
*/
toString(): string;
// internal

View File

@@ -3,39 +3,145 @@ declare namespace AMap {
type Feature = 'bg' | 'point' | 'road' | 'building';
type ViewMode = '2D' | '3D';
interface Options {
/**
* 地图视口,用于控制影响地图静态显示的属性
*/
view?: View2D;
/**
* 地图图层数组,数组可以是图层 中的一个或多个,默认为普通二维地图
*/
layers?: Layer[];
/**
* 地图显示的缩放级别
*/
zoom?: number;
/**
* 地图中心点坐标值
*/
center?: LocationValue;
/**
* 地图标注显示顺序
*/
labelzIndex?: number;
/**
* 地图显示的缩放级别范围
*/
zooms?: [number, number];
/**
* 地图语言类型
*/
lang?: Lang;
/**
* 地图默认鼠标样式
*/
defaultCursor?: string;
/**
* 地图显示的参考坐标系
*/
crs?: 'EPSG3857' | 'EPSG3395' | 'EPSG4326';
/**
* 地图平移过程中是否使用动画
*/
animateEnable?: boolean;
/**
* 是否开启地图热点和标注的hover效果
*/
isHotspot?: boolean;
/**
* 当前地图中默认显示的图层
*/
defaultLayer?: TileLayer;
/**
* 地图是否可旋转
*/
rotateEnable?: boolean;
/**
* 是否监控地图容器尺寸变化
*/
resizeEnable?: boolean;
/**
* 是否在有矢量底图的时候自动展示室内地图
*/
showIndoorMap?: boolean;
/**
* 在展示矢量图的时候自动展示室内地图图层
*/
// indoorMap?: IndorMap
/**
* 是否支持可以扩展最大缩放级别
*/
expandZoomRange?: boolean;
/**
* 地图是否可通过鼠标拖拽平移
*/
dragEnable?: boolean;
/**
* 地图是否可缩放
*/
zoomEnable?: boolean;
/**
* 地图是否可通过双击鼠标放大地图
*/
doubleClickZoom?: boolean;
/**
* 地图是否可通过键盘控制
*/
keyboardEnable?: boolean;
/**
* 地图是否使用缓动效果
*/
jogEnable?: boolean;
/**
* 地图是否可通过鼠标滚轮缩放浏览
*/
scrollWheel?: boolean;
/**
* 地图在移动终端上是否可通过多点触控缩放浏览地图
*/
touchZoom?: boolean;
/**
* 当touchZoomCenter=1的时候手机端双指缩放的以地图中心为中心否则默认以双指中间点为中心
*/
touchZoomCenter?: number;
/**
* 设置地图的显示样式
*/
mapStyle?: string;
/**
* 设置地图上显示的元素种类
*/
features?: Feature[] | 'all' | Feature;
/**
* 设置地图显示3D楼块效果
*/
showBuildingBlock?: boolean;
/**
* 视图模式
*/
viewMode?: ViewMode;
/**
* 俯仰角度
*/
pitch?: number;
/**
* 是否允许设置俯仰角度
*/
pitchEnable?: boolean;
/**
* 楼块出现和消失的时候是否显示动画过程
*/
buildingAnimation?: boolean;
/**
* 调整天空颜色
*/
skyColor?: string;
/**
* 设置地图的预加载模式
*/
preloadMode?: boolean;
/**
* 为 Map 实例指定掩模的路径,各图层将只显示路径范围内图像
*/
mask?: Array<[number, number]> | Array<Array<[number, number]>> | Array<Array<Array<[number, number]>>>;
maxPitch?: number;
rotation?: number;
@@ -58,24 +164,67 @@ declare namespace AMap {
// detectRetina: number;
}
interface Status {
/**
* 是否开启动画
*/
animateEnable: boolean;
/**
* 是否双击缩放
*/
doubleClickZoom: boolean;
/**
* 是否支持拖拽
*/
dragEnable: boolean;
isHotspot: boolean;
/**
* 是否开启缓动效果
*/
jogEnable: boolean;
/**
* 是否支持键盘
*/
keyboardEnable: boolean;
/**
* 是否支持调整俯仰角
*/
pitchEnable: boolean;
resizeEnable: boolean;
/**
* 是否支持旋转
*/
rotateEnable: boolean;
/**
* 是否支持滚轮缩放
*/
scrollWheel: boolean;
/**
* 是否支持触摸缩放
*/
touchZoom: boolean;
/**
* 是否支持缩放
*/
zoomEnable: boolean;
}
type HotspotEvent<N extends string> = Event<N, {
/**
* 经纬度坐标
*/
lnglat: LngLat;
/**
* 热点名称
*/
name: string;
/**
* 热点id
*/
id: string;
// internal
/**
* 是否室内热点
*/
isIndoorPOI: boolean;
}>;
interface EventMap {
@@ -113,73 +262,305 @@ declare namespace AMap {
}
class Map extends EventEmitter {
/**
* 构造一个地图对象
* @param container 地图容器的id或者是DOM元素
* @param opts 选项
*/
constructor(container: string | HTMLElement, opts?: Map.Options);
/**
* 唤起高德地图客户端marker页
* @param obj 唤起参数
*/
poiOnAMAP(obj: { id: string; location?: LocationValue; name?: string }): void;
/**
* 唤起高德地图客户端marker详情页
* @param obj 唤起参数
*/
detailOnAMAP(obj: { id: string; location?: LocationValue; name?: string }): void;
/**
* 获取当前地图缩放级别
*/
getZoom(): number;
/**
* 获取地图图层数组
*/
getLayers(): Layer[];
/**
* 获取地图中心点经纬度坐标值
*/
getCenter(): LngLat;
/**
* 返回地图对象的容器
*/
getContainer(): HTMLElement | null;
/**
* 获取地图中心点所在区域
*/
getCity(callback: (cityData: {
/**
* 市名称
*/
city: string;
/**
* 市代码
*/
citycode: string;
/**
* 区名称
*/
district: string;
/**
* 省
*/
province: string | never[]; // province is empty array when getCity fail
}) => void): void;
/**
* 获取当前地图视图范围,获取当前可视区域
*/
getBounds(): Bounds;
/**
* 获取当前地图标注的显示顺序
*/
getLabelzIndex(): number;
/**
* 获取Map的限制区域
*/
getLimitBounds(): Bounds;
/**
* 获取地图语言类型
*/
getLang(): Lang;
/**
* 获取地图容器像素大小
*/
getSize(): Size;
/**
* 获取地图顺时针旋转角度
*/
getRotation(): number;
/**
* 获取当前地图状态信息
*/
getStatus(): Map.Status;
/**
* 获取地图默认鼠标指针样式
*/
getDefaultCursor(): string;
/**
* 获取指定位置的地图分辨率
* @param point 指定经纬度
*/
getResolution(point?: LocationValue): number;
/**
* 获取当前地图比例尺
* @param dpi dpi
*/
getScale(dpi?: number): number;
/**
* 设置地图显示的缩放级别
* @param level 缩放级别
*/
setZoom(level: number): void;
/**
* 设置地图标注显示的顺序
* @param index 显示顺序
*/
setLabelzIndex(index: number): void;
/**
* 设置地图图层数组
* @param layers 图层数组
*/
setLayers(layers: Layer[]): void;
/**
* 添加覆盖物/图层
* @param overlay 覆盖物/图层
*/
add(overlay: Overlay | Overlay[]): void;
/**
* 删除覆盖物/图层
* @param overlay 覆盖物/图层
*/
remove(overlay: Overlay | Overlay[]): void;
/**
* 返回添加的覆盖物对象
* @param type 覆盖物类型
*/
getAllOverlays(type?: 'marker' | 'circle' | 'polyline' | 'polygon'): Overlay[];
/**
* 设置地图显示的中心点
* @param center 中心点经纬度
*/
setCenter(center: LocationValue): void;
/**
* 地图缩放至指定级别并以指定点为地图显示中心点
* @param zoomLevel 缩放等级
* @param center 缩放中心
*/
setZoomAndCenter(zoomLevel: number, center: LocationValue): void;
/**
* 按照行政区名称或adcode来设置地图显示的中心点。
* @param city 城市名称或城市编码
* @param callback 回调
*/
setCity(city: string, callback: (this: this, coord: [string, string], zoom: number) => void): void;
/**
* 指定当前地图显示范围
* @param bound 显示范围
*/
setBounds(bound: Bounds): Bounds;
/**
* 设置Map的限制区域
* @param bound 限制区域
*/
setLimitBounds(bound: Bounds): void;
/**
* 清除限制区域
*/
clearLimitBounds(): void;
/**
* 设置地图语言类型
* @param lang 语言类型
*/
setLang(lang: Lang): void;
/**
* 设置地图顺时针旋转角度,旋转原点为地图容器中心点
* @param rotation 旋转角度
*/
setRotation(rotation: number): void;
/**
* 设置当前地图显示状态
* @param status 状态
*/
setStatus(status: Partial<Map.Status>): void;
/**
* 设置鼠标指针默认样式
* @param cursor 指针样式
*/
setDefaultCursor(cursor: string): void;
/**
* 地图放大一级显示
*/
zoomIn(): void;
/**
* 地图缩小一级显示
*/
zoomOut(): void;
/**
* 地图中心点平移至指定点位置
* @param position 目标位置经纬度
*/
panTo(position: LocationValue): void;
/**
* 以像素为单位沿x方向和y方向移动地图
* @param x 横向移动像素,向右为正
* @param y 纵向移动像素,向下为正
*/
panBy(x: number, y: number): void;
/**
* 根据地图上添加的覆盖物分布情况,自动缩放地图到合适的视野级别
* @param overlayList 覆盖物数组
* @param immediately 是否需要动画过程
* @param avoid 上下左右的像素避让宽度
* @param maxZoom 最大缩放级别
*/
setFitView(
overlayList?: Overlay | Overlay[],
immediately?: boolean,
avoid?: [number, number, number, number],
maxZoom?: number
): Bounds | false | undefined;
/**
* 删除地图上所有的覆盖物
*/
clearMap(): void;
/**
* 注销地图对象,并清空地图容器
*/
destroy(): void;
/**
* 加载插件,
* tips: 插件的类型定义不在本类型定义中给出,需要另行安装例如
* 3d地图@types/amap-js-api-map3d
* 地区搜索:@types/amap-js-api-place-search
* @param name 插件名称
* @param callback 插件加载完成后的回调函数
*/
plugin(name: string | string[], callback: () => void): this;
/**
* 添加控件
* @param control 控件
*/
addControl(control: {}): void; // TODO
/**
* 移除控件
* @param control 控件
*/
removeControl(control: {}): void; // TODO
/**
* 清除地图上的信息窗体。
*/
clearInfoWindow(): void;
/**
* 平面地图像素坐标转换为地图经纬度坐标
* @param pixel 像素坐标
* @param level 缩放等级
*/
pixelToLngLat(pixel: Pixel, level?: number): LngLat;
/**
* 地图经纬度坐标转换为平面地图像素坐标
* @param lnglat 经纬度坐标
* @param level 缩放等级
*/
lnglatToPixel(lnglat: LocationValue, level?: number): Pixel;
/**
* 地图容器像素坐标转为地图经纬度坐标
* @param pixel 地图像素坐标
*/
containerToLngLat(pixel: Pixel): LngLat;
/**
* 地图经纬度坐标转为地图容器像素坐标
* @param lnglat 经纬度坐标
*/
lngLatToContainer(lnglat: LocationValue): Pixel;
/**
* 地图经纬度坐标转为地图容器像素坐标
* @param lnglat 经纬度坐标
*/
lnglatTocontainer(lnglat: LocationValue): Pixel;
/**
* 设置地图的显示样式
* @param style 地图样式
*/
setMapStyle(style: string): void;
/**
* 获取地图显示样式
*/
getMapStyle(): string;
/**
* 设置地图上显示的元素种类
* @param feature 元素
*/
setFeatures(feature: Map.Feature | Map.Feature[] | 'all'): void;
/**
* 获取地图显示元素种类
*/
getFeatures(): Map.Feature | Map.Feature[] | 'all';
/**
* 修改底图图层
* @param layer 图层
*/
setDefaultLayer(layer: TileLayer): void;
/**
* 设置俯仰角
* @param pitch 俯仰角
*/
setPitch(pitch: number): void;
/**
* 获取俯仰角
*/
getPitch(): number;
getViewMode_(): Map.ViewMode;
lngLatToGeodeticCoord(lnglat: LocationValue): Pixel;
geodeticCoordToLngLat(pixel: Pixel): LngLat;

View File

@@ -2,18 +2,31 @@ declare namespace AMap {
namespace BezierCurve {
interface EventMap<I = BezierCurve> extends Polyline.EventMap<I> { }
type Options<ExtraData = any> = Merge<Polyline.Options<ExtraData>, {
// internal
/**
* 贝瑟尔曲线的路径
*/
path: Array<Array<number | string | Array<string | number>>>;
// internal
tolerance?: number;
interpolateNumLimit?: [number | number];
}>;
interface GetOptionsResult<ExtraData = any> extends Polyline.GetOptionsResult<ExtraData> {
/**
* 贝瑟尔曲线的路径
*/
path: Array<LngLat & { controlPoints: LngLat[] }>;
}
}
class BezierCurve<ExtraData = any> extends Polyline<ExtraData> {
/**
* 贝瑟尔曲线
* @param options 覆盖物选项
*/
constructor(options: BezierCurve.Options<ExtraData>);
/**
* 获取覆盖物选项
*/
getOptions(): Partial<BezierCurve.GetOptionsResult<ExtraData>>;
// internal
getInterpolateLngLats(): LngLat[];

View File

@@ -34,15 +34,50 @@ declare namespace AMap {
}
class Circle<ExtraData = any> extends ShapeOverlay<ExtraData> {
/**
* 圆形覆盖物
* @param options 覆盖物选项
*/
constructor(options?: Circle.Options<ExtraData>);
/**
* 设置圆中心点
* @param center 中心点经纬度
* @param preventEvent 阻止触发事件
*/
setCenter(center: LocationValue, preventEvent?: boolean): void;
/**
* 获取圆中心点
*/
getCenter(): LngLat | undefined;
/**
* 获取圆外切矩形范围
*/
getBounds(): Bounds | null;
/**
* 设置圆形的半径
* @param radius 半径
* @param preventEvent 阻止触发事件
*/
setRadius(radius: number, preventEvent?: boolean): void;
/**
* 获取圆形的半径
*/
getRadius(): number;
/**
* 修改选项
* @param options 选项
*/
setOptions(options?: Circle.Options<ExtraData>): void;
/**
* 获取选项
*/
getOptions(): Partial<Circle.GetOptionsResult<ExtraData>>;
/**
* 判断指定点坐标是否在圆内
* @param point 坐标
*/
contains(point: LocationValue): boolean;
// internal
getPath(count?: number): LngLat[];
}

View File

@@ -1,4 +1,7 @@
declare namespace AMap {
// tslint:disable-next-line;
/**
* 圆点标记
*/
class CircleMarker<ExtraData = any> extends Circle<ExtraData> {}
}

View File

@@ -1,7 +1,11 @@
declare namespace AMap {
namespace ContextMenu {
interface Options {
/**
* 右键菜单内容
*/
content?: string | HTMLElement;
// internal
visible?: boolean;
}
@@ -14,10 +18,33 @@ declare namespace AMap {
}
class ContextMenu<ExtraData = any> extends Overlay<ExtraData> {
/**
* 地图右键菜单
* @param options 选项
*/
constructor(options?: ContextMenu.Options);
/**
* 右键菜单中添加菜单项
* @param text 菜单显示内容
* @param fn 该菜单下需进行的操作
* @param num 当前菜单项在右键菜单中的排序位置以0开始
*/
addItem(text: string, fn: (this: HTMLLIElement) => void, num?: number): void;
removeItem(test: string, fn: (this: HTMLLIElement) => void): void;
/**
* 删除一个菜单项
* @param text 菜单显示内容
* @param fn 该菜单下需进行的操作
*/
removeItem(text: string, fn: (this: HTMLLIElement) => void): void;
/**
* 在地图的指定位置打开右键菜单。
* @param map 目标地图
* @param position 打开位置经纬度
*/
open(map: Map, position: LocationValue): void;
/**
* 关闭右键菜单
*/
close(): void;
}
}

View File

@@ -6,7 +6,13 @@ declare namespace AMap {
}
interface Options<ExtraData = any> extends Polygon.Options<ExtraData> {
/**
* 椭圆的中心
*/
center?: LocationValue;
/**
* 椭圆半径
*/
radius?: [number, number];
}
type GetOptionsResult<ExtraData = any> = Merge<Circle.GetOptionsResult<ExtraData>, {
@@ -15,9 +21,25 @@ declare namespace AMap {
}
class Ellipse<ExtraData = any> extends Polygon<ExtraData> {
/**
* 椭圆
* @param options 选项
*/
constructor(options?: Ellipse.Options<ExtraData>);
/**
* 获取椭圆的中心点
*/
getCenter(): LngLat | undefined;
/**
* 设置椭圆的中心点
* @param center 中心点
* @param preventEvent 阻止触发事件
*/
setCenter(center: LocationValue, preventEvent?: boolean): void;
/**
* 修改椭圆属性
* @param options 属性
*/
setOptions(options: Ellipse.Options<ExtraData>): void;
// internal

View File

@@ -24,9 +24,27 @@ declare namespace AMap {
features: GeoJSONObject[];
};
interface Options {
/**
* 要加载的标准GeoJSON对象
*/
geoJSON?: GeoJSONObject | GeoJSONObject[];
/**
* 指定点要素的绘制方式
* @param obj GeoJSON对象
* @param lnglat 点的位置
*/
getMarker?(obj: GeoJSONObject, lnglat: LngLat): Marker;
/**
* 指定线要素的绘制方式
* @param obj GeoJSON对象
* @param lnglats 线的路径
*/
getPolyline?(obj: GeoJSONObject, lnglats: LngLat[]): Polyline;
/**
* 指定面要素的绘制方式
* @param obj GeoJSON对象
* @param lnglats 面的路径
*/
getPolygon?(obj: GeoJSONObject, lnglats: LngLat[]): Polygon;
coordsToLatLng?(lnglat: LngLat): LngLat;
@@ -36,8 +54,19 @@ declare namespace AMap {
}
class GeoJSON<ExtraData = any> extends OverlayGroup<Overlay, ExtraData> {
/**
* GeoJSON
* @param options 选项
*/
constructor(options?: GeoJSON.Options);
/**
* 加载新的GeoJSON对象转化为覆盖物旧的覆盖物将移除
* @param obj GeoJSON对象
*/
importData(obj: GeoJSON.GeoJSONObject | GeoJSON.GeoJSONObject[]): void;
/**
* 将当前对象包含的覆盖物转换为GeoJSON对象
*/
toGeoJSON(): GeoJSON.GeoJSONObject[];
}
}

View File

@@ -1,16 +1,39 @@
declare namespace AMap {
namespace Icon {
interface Options {
/**
* 图标尺寸
*/
size?: SizeValue;
/**
* 图标取图偏移量
*/
imageOffset?: Pixel;
/**
* 图标的取图地址
*/
image?: string;
/**
* 图标所用图片大小
*/
imageSize?: SizeValue;
}
}
class Icon extends EventEmitter {
/**
* 点标记的图标
* @param options 选项
*/
constructor(options?: Icon.Options);
/**
* 设置图标图片大小
* @param size 大小
*/
setImageSize(size: SizeValue): void;
/**
* 获取图标图片大小
*/
getImageSize(): Size;
}
}

View File

@@ -6,14 +6,44 @@ declare namespace AMap {
close: Event<'close', { target: I }>;
}
type Anchor = 'top-left' | 'top-center' | 'top-right' | 'middle-left' | 'center' | 'middle-right' | 'bottom-left' | 'bottom-center' | 'bottom-right';
interface Options<ExtraData = any> extends Overlay.Options<ExtraData> {
/**
* 是否自定义窗体
*/
isCustom?: boolean;
/**
* 是否自动调整窗体到视野内
*/
autoMove?: boolean;
/**
* 控制是否在鼠标点击地图后关闭信息窗体
*/
closeWhenClickMap?: boolean;
/**
* 显示内容
*/
content?: string | HTMLElement;
/**
* 信息窗体尺寸
*/
size?: SizeValue;
/**
* 信息窗体锚点
*/
anchor?: Anchor;
/**
* 信息窗体显示位置偏移量
*/
offset?: Pixel;
/**
* 信息窗体显示基点位置
*/
position?: LocationValue;
/**
* 是否显示信息窗体阴影
*/
showShadow?: boolean;
// internal
height?: number;
@@ -21,16 +51,62 @@ declare namespace AMap {
}
class InfoWindow<ExtraData = any> extends Overlay<ExtraData> {
/**
* 信息展示窗体
* @param options 选项
*/
constructor(options?: InfoWindow.Options);
/**
* 在地图的指定位置打开信息窗体
* @param map 地图
* @param position 打开的位置
*/
open(map: Map, position?: LocationValue): void;
/**
* 关闭信息窗体
*/
close(): void;
/**
* 获取信息窗体是否打开
*/
getIsOpen(): boolean;
/**
* 设置信息窗体内容
* @param content 窗体内容
*/
setContent(content: string | HTMLElement): void;
/**
* 获取信息窗体内容
*/
getContent(): string | HTMLElement | undefined;
/**
* 设置信息窗体显示基点位置
* @param lnglat 位置经纬度
*/
setPosition(lnglat: LocationValue): void;
/**
* 获取信息窗体显示基点位置
*/
getPosition(): LngLat | undefined;
/**
* 获取锚点
*/
getAnchor(): InfoWindow.Anchor | undefined;
/**
* 设置锚点
* @param anchor 锚点
*/
setAnchor(anchor?: InfoWindow.Anchor): void;
/**
* 设置信息窗体大小
* @param size 大小
*/
setSize(size: SizeValue): void;
/**
* 获取信息窗体大小
*/
getSize(): Size | undefined;
// internal
setOffset(offset: Pixel): void;
}

View File

@@ -25,79 +25,283 @@ declare namespace AMap {
offset?: Pixel;
}
type Anchor = 'top-left' | 'top-center' | 'top-right' | 'middle-left' | 'center' | 'middle-right' | 'bottom-left' | 'bottom-center' | 'bottom-right';
interface Options<ExtraData = any> extends Overlay.Options<ExtraData> {
/**
* 点标记在地图上显示的位置
*/
position?: LocationValue;
/**
* 标记锚点
*/
anchor?: Anchor;
/**
* 点标记显示位置偏移量
*/
offset?: Pixel;
/**
* 需在点标记中显示的图标
*/
icon?: string | Icon;
/**
* 点标记显示内容
*/
content?: string | HTMLElement;
/**
* 鼠标点击时marker是否置顶
*/
topWhenClick?: boolean;
/**
* 是否将覆盖物的鼠标或touch等事件冒泡到地图上
*/
bubble?: boolean;
/**
* 点标记是否可拖拽移动
*/
draggable?: boolean;
/**
* 拖拽点标记时是否开启点标记离开地图的效果
*/
raiseOnDrag?: boolean;
/**
* 鼠标悬停时的鼠标样式
*/
cursor?: string;
/**
* 点标记是否可见
*/
visible?: boolean;
/**
* 点标记的叠加顺序
*/
zIndex?: number;
/**
* 点标记的旋转角度
*/
angle?: number;
/**
* 是否自动旋转
*/
autoRotation?: boolean;
/**
* 点标记的动画效果
*/
animation?: AnimationName;
/**
* 点标记阴影
*/
shadow?: Icon | string;
/**
* 鼠标滑过点标记时的文字提示
*/
title?: string;
/**
* 可点击区域
*/
shape?: MarkerShape;
/**
* 文本标注
*/
label?: Label;
zooms?: [number, number];
// internal
zooms?: [number, number];
topWhenMouseOver?: boolean;
height?: number;
}
}
class Marker<ExtraData = any> extends Overlay<ExtraData> {
/**
* 点标记
* @param options 选项
*/
constructor(options?: Marker.Options<ExtraData>);
/**
* 唤起高德地图客户端标注页
* @param obj 唤起参数
*/
markOnAMAP(obj?: { name?: string, position?: LocationValue }): void;
/**
* 获取锚点
*/
getAnchor(): Marker.Anchor | undefined;
/**
* 设置锚点
*/
setAnchor(anchor?: Marker.Anchor): void;
/**
* 获取偏移量
*/
getOffset(): Pixel;
/**
* 设置偏移量
* @param offset 偏移量
*/
setOffset(offset: Pixel): void;
/**
* 设置点标记的动画效果
* @param animate 动画效果类型
*/
setAnimation(animate: AnimationName, prevent?: boolean): void;
/**
* 获取点标记的动画效果类型
*/
getAnimation(): AnimationName;
/**
* 设置点标记是支持鼠标单击事件
* @param cilckable 是否支持点击
*/
setClickable(cilckable: boolean): void;
/**
* 获取点标记是否支持鼠标单击事件
*/
getClickable(): boolean;
/**
* 获取点标记的位置
*/
getPosition(): LngLat | undefined;
/**
* 设置点标记位置
* @param position 位置经纬度
*/
setPosition(position: LocationValue): void;
/**
* 设置点标记的旋转角度
* @param angle 旋转角度
*/
setAngle(angle: number): void;
/**
* 设置点标记文本标签内容
* @param label 标签内容
*/
setLabel(label?: Marker.Label): void;
/**
* 获取点标记文本标签内容
*/
getLabel(): Marker.Label | undefined;
/**
* 获取点标记的旋转角度
*/
getAngle(): number;
/**
* 设置点标记的叠加顺序
* @param index 层级
*/
setzIndex(index: number): void;
/**
* 获取点标记的叠加顺序
*/
getzIndex(): number;
/**
* 设置点标记的显示图标
* @param content 图标
*/
setIcon(content: string | Icon): void;
/**
* 获取Icon内容
*/
getIcon(): string | Icon | undefined;
/**
* 设置点标记对象是否可拖拽移动
* @param draggable 是否可拖拽移动
*/
setDraggable(draggable: boolean): void;
/**
* 获取点标记对象是否可拖拽移动
*/
getDraggable(): boolean;
/**
* 设置鼠标悬停时的光标
* @param cursor 光标
*/
setCursor(cursor: string): void;
/**
* 设置点标记显示内容可以是HTML要素字符串或者HTML DOM对象
* @param content 显示内容
*/
setContent(content: string | HTMLElement): void;
/**
* 获取点标记内容
*/
getContent(): string | HTMLElement;
/**
* 以指定的速度,点标记沿指定的路径移动
* @param path 移动轨迹
* @param speed 速度
* @param timingFunction 缓动函数
* @param circleable 是否循环
*/
moveAlong(
path: LngLat[],
speed: number,
timingFunction?: (t: number) => number,
circleable?: boolean
): void;
/**
* 以给定速度移动点标记到指定位置
* @param lnglat 目标位置
* @param speed 速度
* @param timingFunction 缓动函数
*/
moveTo(
path: LocationValue,
lnglat: LocationValue,
speed: number,
timingFunction?: (t: number) => number
): void;
/**
* 点标记停止动画
*/
stopMove(): void;
/**
* 暂定点标记的动画效果
*/
pauseMove(): boolean;
/**
* 重新开始点标记的动画效果
*/
resumeMove(): boolean;
/**
* 指定目标显示地图
* @param map 地图
*/
setMap(map: null | Map): void;
/**
* 鼠标滑过点标时的文字提示
* @param title 提示文字
*/
setTitle(title: string): void;
/**
* 获取点标记的文字提示
*/
getTitle(): string | undefined;
/**
* 设置是否展示在最顶层
* @param isTop 是否展示在最顶层
*/
setTop(isTop: boolean): void;
/**
* 获取是否展示在最顶层
*/
getTop(): boolean;
/**
* 设置阴影效果
* @param icon 阴影效果
*/
setShadow(icon?: Icon | string): void;
/**
* 获取阴影图标
*/
getShadow(): Icon | undefined | string;
/**
* 设置可点击区域
* @param shape 可点击区域
*/
setShape(shape?: MarkerShape): void;
/**
* 获取可点击区域
*/
getShape(): MarkerShape | undefined;
}
}

View File

@@ -16,6 +16,10 @@ declare namespace AMap {
}
class MarkerShape extends EventEmitter {
/**
* Marker点击范围
* @param options 选项
*/
constructor(options: MarkerShape.Options);
}
}

View File

@@ -13,21 +13,59 @@ declare namespace AMap {
mouseup: MapsEvent<'mouseup', I>;
}
interface Options<ExtraData = any> {
/**
* 所属地图
*/
map?: Map;
/**
* 鼠标悬停时的鼠标样式
*/
cursor?: string;
/**
* 自定义数据
*/
extData?: ExtraData;
/**
* 事件是否穿透到地图
*/
bubble?: boolean;
/**
* 是否支持点击
*/
clickable?: boolean;
/**
* 是否支持拖拽
*/
draggable?: boolean;
}
}
abstract class Overlay<ExtraData = any> extends EventEmitter {
constructor(options?: Overlay.Options);
/**
* 显示覆盖物
*/
show(): void;
/**
* 隐藏覆盖物
*/
hide(): void;
/**
* 获取所属地图
*/
getMap(): Map | null | undefined;
/**
* 设置所属地图
* @param map 地图
*/
setMap(map: Map | null): void;
/**
* 设置自定义数据
* @param extData 自定义数据
*/
setExtData(extData: ExtraData): void;
/**
* 获取自定义数据
*/
getExtData(): ExtraData | {};
// internal

View File

@@ -11,20 +11,72 @@ type ReferOverlayOptions<O> =
declare namespace AMap {
class OverlayGroup<O extends Overlay = Overlay, ExtraData = any> extends Overlay<ExtraData> {
/**
* 覆盖物集合
* @param overlays 覆盖物
*/
constructor(overlays?: O | O[]);
/**
* 添加单个覆盖物到集合中,不支持添加重复的覆盖物
* @param overlay 覆盖物
*/
addOverlay(overlay: O | O[]): this;
/**
* 添加覆盖物数组到集合中,不支持添加重复的覆盖物
* @param overlay 覆盖物数组
*/
addOverlays(overlay: O | O[]): this;
/**
* 返回当前集合中所有的覆盖物
*/
getOverlays(): O[];
/**
* 判断传入的覆盖物实例是否在集合中
* @param overlay 覆盖物
*/
hasOverlay(overlay: O | ((this: null, item: O, index: number, list: O[]) => boolean)): boolean;
/**
* 从集合中删除传入的覆盖物实例
* @param overlay 覆盖物
*/
removeOverlay(overlay: O | O[]): this;
/**
* 从集合中删除传入的覆盖物实例数组
* @param overlay 覆盖物数组
*/
removeOverlays(overlay: O | O[]): this;
/**
* 清空集合
*/
clearOverlays(): this;
/**
* 对集合中的覆盖物做迭代操作
* @param iterator 迭代回调
* @param context 执行上下文
*/
eachOverlay<C = O>(iterator: (this: C, overlay: O, index: number, overlays: O[]) => void, context?: C): this;
/**
* 指定集合中里覆盖物的显示地图
* @param map 地图
*/
setMap(map: null | Map): this;
/**
* 修改覆盖物属性
* @param options 属性
*/
setOptions(options: ReferOverlayOptions<O>): this;
/**
* 在地图上显示集合中覆盖物
*/
show(): this;
/**
* 在地图上隐藏集合中覆盖物
*/
hide(): this;
/**
* 查找集合中的覆盖物
* @param finder 查找回调
*/
getOverlay(finder: ((this: null, item: O, index: number, list: O[]) => boolean) | O): O | null;
}
}

View File

@@ -2,19 +2,49 @@ declare namespace AMap {
namespace PathOverlay {
interface EventMap<I = PathOverlay> extends ShapeOverlay.EventMap<I> { }
interface Options<ExtraData = any> extends Overlay.Options<ExtraData> {
/**
* 是否可见
*/
visible?: boolean;
/**
* 覆盖物层级
*/
zIndex?: number;
/**
* 描边线条颜色
*/
strokeColor?: string;
/**
* 描边线条透明度
*/
strokeOpacity?: number;
/**
* 描边宽度
*/
strokeWeight?: number;
/**
* 描边样式
*/
strokeStyle?: StrokeStyle;
/**
* 虚线间隔
*/
strokeDasharray?: number[];
/**
* 折线拐点的绘制样式
*/
lineJoin?: StrokeLineJoin;
/**
* 折线两端线帽的绘制样式
*/
lineCap?: StrokeLineCap;
}
}
abstract class PathOverlay<ExtraData = any> extends ShapeOverlay<ExtraData> {
constructor(options?: PathOverlay.Options<ExtraData>);
/**
* 获取范围
*/
getBounds(): Bounds | (this extends Rectangle ? undefined : null);
}
}

View File

@@ -2,31 +2,77 @@ declare namespace AMap {
namespace Polygon {
interface EventMap<I = Polygon> extends PathOverlay.EventMap<I> { }
interface Options<ExtraData = any> extends PathOverlay.Options<ExtraData> {
/**
* 多边形轮廓线的节点坐标数组
*/
path?: LocationValue[] | LocationValue[][];
/**
* 多边形填充颜色
*/
fillColor?: string;
/**
* 边形填充透明度
*/
fillOpacity?: number;
}
interface GetOptionsResult<ExtraData = any> extends ShapeOverlay.GetOptionsResult<ExtraData> {
/**
* 多边形填充颜色
*/
fillColor: string;
/**
* 边形填充透明度
*/
fillOpacity: number;
/**
* 多边形轮廓线的节点坐标数组
*/
path: LngLat[] | LngLat[][];
/**
* 折线拐点的绘制样式
*/
lineJoin: StrokeLineJoin;
texture: string;
}
}
class Polygon<ExtraData = any> extends PathOverlay<ExtraData> {
/**
* 多边形
* @param options 选项
*/
constructor(options?: Polygon.Options<ExtraData>);
/**
* 设置多边形轮廓线节点数组
* @param path 轮廓线节点
*/
setPath(path: LocationValue[] | LocationValue[][]): void;
/**
* 获取多边形轮廓线节点数组
*/
getPath(): LngLat[] | LngLat[][];
/**
* 修改多边形属性
* @param options 属性
*/
setOptions(options: Polygon.Options<ExtraData>): void;
/**
* 获取多边形的属性
*/
getOptions(): Partial<
this extends Omit<Ellipse, keyof Polygon> ? Ellipse.GetOptionsResult<ExtraData> :
this extends Omit<Rectangle, keyof Polygon> ? Rectangle.GetOptionsResult<ExtraData> :
Polygon.GetOptionsResult<ExtraData>
>;
/**
* 获取多边形的面积
*/
getArea(): number;
/**
* 判断指定点坐标是否在多边形范围内
* @param point 坐标
*/
contains(point: LocationValue): boolean;
}
}

View File

@@ -2,45 +2,118 @@ declare namespace AMap {
namespace Polyline {
interface EventMap<I = Polyline> extends PathOverlay.EventMap<I> { }
interface GetOptionsResult<ExtraData = any> extends ShapeOverlay.GetOptionsResult<ExtraData> {
/**
* 线条是否带描边
*/
isOutline: boolean;
/**
* 线条描边颜色
*/
outlineColor: string;
/**
* 是否绘制成大地线
*/
geodesic: boolean;
/**
* 折线的节点数组
*/
path: LngLat[];
/**
* 折线拐点的绘制样式
*/
lineJoin: StrokeLineJoin;
/**
* 折线两端线帽的绘制样式
*/
lineCap: StrokeLineCap;
/**
* 描边的宽度
*/
borderWeight: number;
/**
* 是否延路径显示方向箭头
*/
showDir: boolean;
/**
* 方向箭头颜色
*/
dirColor: string;
/**
* 方向箭头图片
*/
dirImg: string;
}
interface Options<ExtraData = any> extends PathOverlay.Options<ExtraData> {
/**
* 线条是否带描边
*/
isOutline?: boolean;
/**
* 线条描边颜色
*/
outlineColor?: string;
/**
* 是否绘制成大地线
*/
geodesic?: boolean;
/**
* 方向箭头颜色
*/
dirColor?: string;
/**
* 描边的宽度
*/
borderWeight?: number;
/**
* 是否延路径显示方向箭头
*/
showDir?: boolean;
// internal
/**
* 折线的节点数组
*/
path?: LocationValue[];
}
}
class Polyline<ExtraData = any> extends PathOverlay<ExtraData> {
/**
* 折线
* @param options 选项
*/
constructor(options?: BezierCurve.Options<ExtraData> | Polyline.Options<ExtraData>);
/**
* 设置组成该折线的节点数组
* @param path 节点数组
*/
setPath(
path: this extends Omit<BezierCurve, keyof Polyline> ?
Array<Array<number | string | Array<string | number>>>
: LocationValue[]
): void;
/**
* 获取折线路径的节点数组
*/
getPath(): this extends Omit<BezierCurve, keyof Polyline> ?
Array<LngLat & { controlPoints: LngLat[] }>
: LngLat[];
/**
* 获取折线的总长度(单位:米)
*/
getLength(): number;
/**
* 设置线的属性
* @param options 属性
*/
setOptions(options: this extends Omit<BezierCurve, keyof Polyline> ?
Partial<BezierCurve.Options<ExtraData>>
: Polyline.Options<ExtraData>
): void;
/**
* 获取线的属性
*/
getOptions(): Partial<Polyline.GetOptionsResult<ExtraData>>;
}
}

View File

@@ -5,17 +5,39 @@ declare namespace AMap {
}
interface Options<ExtraData = any> extends Polygon.Options<ExtraData> {
/**
* 矩形的范围
*/
bounds?: Bounds;
}
type GetOptionsResult<ExtraData = any> = Merge<Polygon.GetOptionsResult<ExtraData>, {
/**
* 路径节点数组
*/
path: LngLat[];
/**
* 矩形的范围
*/
bounds: Bounds;
texture: string;
}>;
}
class Rectangle<ExtraData = any> extends Polygon<ExtraData> {
/**
* 矩形
* @param options 选项
*/
constructor(options?: Rectangle.Options<ExtraData>);
/**
* 获取矩形范围
* @param bounds 矩形的范围
* @param preventEvent 阻止触发事件
*/
setBounds(bounds: Bounds, preventEvent?: boolean): void;
/**
* 修改矩形属性
* @param options 属性
*/
setOptions(options: Partial<Rectangle.Options>): void;
}
}

View File

@@ -7,24 +7,74 @@ declare namespace AMap {
change: Event<'change', { target: I }>;
}
interface GetOptionsResult<ExtraData = any> {
/**
* 所属地图
*/
map: Map;
/**
* 层级
*/
zIndex: number;
/**
* 线条颜色
*/
strokeColor: string;
/**
* 线条透明度
*/
strokeOpacity: number;
/**
* 线条宽度
*/
strokeWeight: number;
/**
* 线条样式,虚线或者实线
*/
strokeStyle: StrokeStyle;
/**
* 虚线的分段
*/
strokeDasharray: number[];
/**
* 自定义属性
*/
extData: ExtraData | {};
/**
* 事件是否穿透到地图
*/
bubble: boolean;
/**
* 是否支持点击
*/
clickable: boolean;
}
}
abstract class ShapeOverlay<ExtraData = any> extends Overlay<ExtraData> {
/**
* 设置覆盖物属性
* @param options 属性
*/
abstract setOptions(options: {}): void;
/**
* 获得属性
*/
abstract getOptions(): {};
/**
* 获得层级
*/
getzIndex(): number;
/**
* 设置层级
* @param zIndex 层级
*/
setzIndex(zIndex: number): void;
/**
* 返回可见
*/
getVisible(): boolean;
/**
* 设置是否可以拖拽
*/
setDraggable(draggable: boolean): void;
}
}

View File

@@ -4,16 +4,38 @@ declare namespace AMap {
type VerticalAlign = 'top' | 'middle' | 'bottom';
interface EventMap<I = Text> extends Marker.EventMap<I> { }
interface Options extends Marker.Options {
/**
* 文本内容
*/
text?: string;
/**
* 对齐方式
*/
textAlign?: TextAlign;
verticalAlign?: VerticalAlign;
}
}
class Text<ExtraData = any> extends Marker<ExtraData> {
/**
* 纯文本标记
* @param options 选项
*/
constructor(options?: Text.Options);
/**
* 标记显示的文本内容
*/
getText(): string;
/**
* 修改文本内容
* @param text 文本内容
*/
setText(text: string): void;
/**
* 设置文本样式
* @param style 文本样式
*/
setStyle(style: object): void;
}
}

View File

@@ -1,9 +1,28 @@
declare namespace AMap {
class Pixel {
/**
* 像素坐标,确定地图上的一个像素点
* @param x 横轴坐标
* @param y 纵轴坐标
* @param round 是否四舍五入
*/
constructor(x: number, y: number, round?: boolean);
/**
* 获得X方向像素坐标
*/
getX(): number;
/**
* 获得Y方向像素坐标
*/
getY(): number;
/**
* 当前像素坐标与传入像素坐标是否相等
* @param point 目标像素坐标
*/
equals(point: Pixel): boolean;
/**
* 以字符串形式返回像素坐标对象
*/
toString(): string;
// internal

View File

@@ -1,9 +1,24 @@
declare namespace AMap {
class Size {
/**
* 地物对象的像素尺寸
* @param width 宽度像素
* @param height 长度像素
*/
constructor(width: number, height: number);
/**
* 获得宽度
*/
getWidth(): number;
/**
* 获得高度
*/
getHeight(): number;
/**
* 以字符串形式返回尺寸大小对象
*/
toString(): string;
// internal
contains(size: { x: number; y: number }): boolean;
}

View File

@@ -1,25 +1,64 @@
declare namespace AMap {
namespace Util {
/**
* 将颜色名转换为16进制RGB颜色值
* @param colorName 颜色名
*/
function colorNameToHex(colorName: string): string;
/**
* 将16进制RGB转为rgba(R,G,B,A)
* @param hex 16进制RGB
*/
function rgbHex2Rgba(hex: string): string;
/**
* 将16进制RGBA转为rgba(R,G,B,A)
* @param hex 16进制RGBA
*/
function argbHex2Rgba(hex: string): string;
/**
* 判断一个对象是都为空
* @param obj 目标对象
*/
function isEmpty(obj: object): boolean;
/**
* 从数组删除元素
* @param array 数组
* @param item 元素
*/
function deleteItemFromArray<T = any>(array: T[], item: T): T[];
/**
* 按索引删除数组元素
* @param array 数组
* @param index 索引
*/
function deleteItemFromArrayByIndex<T = any>(array: T[], index: number): T[];
/**
* 返回元素索引
* @param array 数组
* @param item 元素
*/
function indexOf<T = any>(array: T[], item: T): number;
/**
* 保留小数点后指定位
* @param floatNumber 数值
* @param digits 小数点位数
*/
function format(floatNumber: number, digits?: number): number;
/**
* 判断是否数组
* @param data 判断对象
*/
function isArray(data: any): data is any[];
/**
* 判断参数是否为DOM元素
* @param data 判断对象
*/
function isDOM(data: any): data is HTMLElement;
/**
* 判断数组是否包含某个元素
* @param array 数组
* @param item 元素
*/
function includes<T = any>(array: T[], item: T): boolean;
function requestIdleCallback(callback: (...args: any[]) => any, options?: { timeout?: number }): number;

View File

@@ -1,13 +1,29 @@
declare namespace AMap {
namespace View2D {
interface Options {
/**
* 地图中心点坐标值
*/
center?: LocationValue;
/**
* 地图顺时针旋转角度
*/
rotation?: number;
/**
* 地图显示的缩放级别
*/
zoom?: number;
/**
* 地图显示的参考坐标系
*/
crs?: 'EPGS3857' | 'EPGS3395' | 'EPGS4326';
}
}
class View2D extends EventEmitter {
/**
* 二维地图显示视口,用于定义二维地图静态显示属性
* @param options 选项
*/
constructor(options?: View2D.Options);
}
}

View File

@@ -8,6 +8,7 @@
"callable-types": false,
"comment-format": false,
"dt-header": false,
"npm-naming": false,
"eofline": false,
"export-just-namespace": false,
"import-spacing": false,

View File

@@ -8,6 +8,7 @@
"callable-types": false,
"comment-format": false,
"dt-header": false,
"npm-naming": false,
"eofline": false,
"export-just-namespace": false,
"import-spacing": false,

View File

@@ -8,6 +8,7 @@
"callable-types": false,
"comment-format": false,
"dt-header": false,
"npm-naming": false,
"eofline": false,
"export-just-namespace": false,
"import-spacing": false,

View File

@@ -8,6 +8,7 @@
"callable-types": false,
"comment-format": false,
"dt-header": false,
"npm-naming": false,
"eofline": false,
"export-just-namespace": false,
"import-spacing": false,

View File

@@ -8,6 +8,7 @@
"callable-types": false,
"comment-format": false,
"dt-header": false,
"npm-naming": false,
"eofline": false,
"export-just-namespace": false,
"import-spacing": false,

View File

@@ -8,6 +8,7 @@
"callable-types": false,
"comment-format": false,
"dt-header": false,
"npm-naming": false,
"eofline": false,
"export-just-namespace": false,
"import-spacing": false,

View File

@@ -8,6 +8,7 @@
"callable-types": false,
"comment-format": false,
"dt-header": false,
"npm-naming": false,
"eofline": false,
"export-just-namespace": false,
"import-spacing": false,

View File

@@ -8,6 +8,7 @@
"callable-types": false,
"comment-format": false,
"dt-header": false,
"npm-naming": false,
"eofline": false,
"export-just-namespace": false,
"import-spacing": false,

View File

@@ -8,6 +8,7 @@
"callable-types": false,
"comment-format": false,
"dt-header": false,
"npm-naming": false,
"eofline": false,
"export-just-namespace": false,
"import-spacing": false,

View File

@@ -8,6 +8,7 @@
"callable-types": false,
"comment-format": false,
"dt-header": false,
"npm-naming": false,
"eofline": false,
"export-just-namespace": false,
"import-spacing": false,

Some files were not shown because too many files have changed in this diff Show More