是否有 Apple MapKit JS 打字稿定义文件?
Is there an Apple MapKit JS typescript definition file?
在我开始写之前,有没有人看过 Apple MapKit JS 的打字稿定义文件 (.d.ts)?
迫不及待写了一篇。这缺少一些位(方向和叠加层)。随意完成它并将其提交给 DefinitelyTyped 或任何你知道如何做的人。
declare namespace mapkit
{
class Coordinate
{
constructor(latitude: number, longitude: number)
/** The latitude in degrees. */
latitude: number
/** The longitude in degrees. */
longitude: number
/** Returns a copy of the coordinate. */
copy(): Coordinate
/** Returns a Boolean value indicating whether two coordinates are equal. */
equals(other: Coordinate): boolean
/** Returns the map point that corresponds to the coordinate. */
toMapPoint(): MapPoint
/** Returns the unwrapped map point that corresponds to the coordinate. */
toUnwrappedMapPoint(): MapPoint
}
interface MapKitInitOptions
{
/**
* The callback function MapKit JS will invoke to asynchronously obtain an authorization token.
* authorizationCallback will be invoked by MapKit JS throughout a session and should be prepared to obtain a new token and pass it to the done function, which will be provided my MapKit JS as the sole argument each time the authorizationCallback function is called.
*/
authorizationCallback: (done: (string) => void ) => void;
language?: string
}
function init(options: MapKitInitOptions): void;
enum MapType
{
/** A satellite image of the area with road and road name information layered on top. */
Hybrid = 'Hybrid',
/** Satellite imagery of the area. */
Satellite = 'Satellite',
/** A street map that shows the position of all roads and some road names. */
Standard = 'Standard'
}
interface MapConstructorOptions
{
/** The visible area of the map defined in map units. */
visibleMapRect?: MapRect
/** The area currently displayed by the map. */
region?: CoordinateRegion
/** The map coordinate at the center of the map view. */
center?: Coordinate
/** The map's rotation, in degrees. */
rotation?: number
/** The CSS color that is used to paint the user interface controls on the map. */
tintColor?: string
/** The type of data displayed by the map view. */
mapType?: MapType
/** The map's inset margins. */
padding?: Padding
/** A Boolean value that determines whether to display a control that lets users choose the map type. */
showsMapTypeControl?: boolean
/** A Boolean value that determines whether the user may rotate the map using the compass control or a rotate gesture. */
isRotationEnabled?: boolean
/** A feature visibility setting that determines when the compass is visible. */
showsCompass?: FeatureVisibility
/** A Boolean value that determines whether the user may zoom in and out on the map using pinch gestures or the zoom control. */
isZoomEnabled?: boolean
/** A Boolean value that determines whether to display a control for zooming in and zooming out on a map. */
showsZoomControl?: boolean
/** A Boolean value that determines whether the user may scroll the map with a pointing device or gestures on a touchscreen. */
isScrollEnabled?: boolean
/** A feature visibility setting that determines when the map's scale is displayed. */
showsScale?: FeatureVisibility
/** A delegate method for modifying cluster annotations. */
annotationForCluster?: Annotation
/** An array of all the annotations on the map. */
annotations?: Annotation[]
/** The annotation on the map that is selected. */
selectedAnnotation?: Annotation|null
/** An array of all of the map's overlays. */
overlays?: Overlay[]
/** The overlay on the map that is selected. */
selectedOverlay?: Overlay|null
/** A Boolean value that determines whether the map displays points of interest. */
showsPointsOfInterest?: boolean
/** A Boolean value that determines whether to show the user's location on the map. */
showsUserLocation?: boolean
/** A Boolean value that determines whether to center the map on the user's location. */
tracksUserLocation?: boolean
/** A Boolean value that determines whether the user location control is visible. */
showsUserLocationControl?: boolean
}
/** An embeddable interactive map that you add to a webpage. */
class Map
{
constructor(parent?: string|Element, options?: MapConstructorOptions)
/** Adds an event listener to handle events triggered by user interactions and the framework. */
addEventListener(type:string, listener: (Map) => void, thisObject?: any);
/** Removes an event listener. */
removeEventListener(type:string, listener: (Map) => void, thisObject?: any);
/** A Boolean value that indicates if map rotation is available. */
isRotationAvailable: boolean
/** A Boolean value that determines whether the user may rotate the map using the compass control or a rotate gesture. */
isRotationEnabled: boolean
/** A Boolean value that determines whether the user may scroll the map with a pointing device or with gestures on a touchscreen. */
isScrollEnabled: boolean
/** A Boolean value that determines whether the user may zoom in and out on the map using pinch gestures or the zoom control. */
isZoomEnabled: boolean
/** The map coordinate at the center of the map view. */
center: Coordinate
/** Centers the map to the provided coordinate, with optional animation. */
setCenterAnimated(coordinate: Coordinate, animate?: boolean): Map;
/** The area currently displayed by the map. */
region: CoordinateRegion
/** Changes the map's region to the region provided, with optional animation. */
setRegionAnimated(egion: CoordinateRegion, animate?: boolean): Map;
/** The map's rotation, in degrees. */
rotation: number
/** Changes the map's rotation setting to the number of degrees specified. */
setRotationAnimated(degrees: number, animate?: boolean): Map;
/** The visible area of the map defined in map units. */
visibleMapRect: MapRect
/** Changes the map's visible map rectangle to the specified map rectangle. */
setVisibleMapRectAnimated(mapRect: MapRect, animate?: boolean): Map;
/** The type of data displayed by the map view. */
mapType: MapType
/** The map's inset margins. */
padding: Padding
/** A feature visibility setting that determines when the compass is visible. */
showsCompass: FeatureVisibility
/** A Boolean value that determines whether to display a control that lets users choose the map type. */
showsMapTypeControl: boolean
/** A Boolean value that determines whether to display a control for zooming in and zooming out on a map. */
showsZoomControl: boolean
/** A Boolean value that determines whether the user location control is visible. */
showsUserLocationControl: boolean
/** A Boolean value that determines whether the map displays points of interest. */
showsPointsOfInterest: boolean
/** A feature visibility setting that determines when the map's scale is displayed. */
showsScale: FeatureVisibility
/** The CSS color that is used to paint the user interface controls on the map. */
tintColor: string
/** Adjusts the maps visible region to bring the specified overlays and annotations into view. */
showItems(items: (Annotation|Overlay)[], options?: MapShowItemsOptions );
/** A delegate method for modifying cluster annotations. */
annotationForCluster?: Annotation
/** An array of all the annotations on the map. */
annotations?: Annotation[]
/** The annotation on the map that is selected. */
selectedAnnotation?: Annotation|null
/** Returns the list of annotation objects located in the specified map rectangle. */
annotationsInMapRect(mapRect: MapRect): Annotation[]
/** Adds an annotation to the map. */
addAnnotation(annotation: Annotation)
/** Adds multiple annotations to the map. */
addAnnotations(annotations: Annotation[])
/** Removes an annotation from the map. */
removeAnnotation(annotation: Annotation)
/** Removes multiple annotations from the map. */
removeAnnotations(annotations: Annotation[])
/** An array of all of the map's overlays. */
overlays: Overlay[]
/** The overlay on the map that is selected. */
selectedOverlay: Overlay|null
/** Returns an array of overlays at a given point on the webpage. */
overlaysAtPoint( point: DOMPoint ): Overlay[]
/** Adds an overlay to the map. */
addOverlay(overlay: Overlay);
/** Adds multiple overlays to the map. */
addOverlays(overlays: Overlay[]);
/** Removes an overlay from the map. */
removeOverlay(overlay: Overlay);
/** Removes multiple overlays from the map. */
removeOverlays(overlays: Overlay[]);
/** Returns the topmost overlay at a given point on the webpage. */
topOverlayAtPoint( point: DOMPoint ): Overlay
/** An array of all of the map's tile overlays. */
tileOverlays: TileOverlay[]
/** Adds a tile overlay to the map. */
addTileOverlay(overlay: TileOverlay);
/** Adds an array of tile overlays to the map. */
addTileOverlays(overlays: TileOverlay[]);
/** Removes a tile overlay from the map. */
removeTileOverlay(overlay: TileOverlay);
/** Removes an array of tile overlays from the map. */
removeTileOverlays(overlays: TileOverlay[]);
/** A Boolean value that determines whether to show the user's location on the map. */
showsUserLocation: boolean
/** A Boolean value that determines whether to center the map on the user's location. */
tracksUserLocation: boolean
/** An annotation that indicates the user's location on the map. */
userLocationAnnotation: Annotation|null
/** Converts a coordinate on the map to a point in the page's coordinate system. */
convertCoordinateToPointOnPage(coordinate: Coordinate): DOMPoint
/** Converts a point in page coordinates to the corresponding map coordinate. */
convertPointOnPageToCoordinate(point: DOMPoint): Coordinate
/** Removes the map's element from the DOM and releases internal references to this map to free up memory. */
destroy(): void
/** The map's DOM element. */
element: Element
}
interface MapShowItemsOptions
{
/** A Boolean value that determines whether the map is animated as the map region changes to show the items. */
animate?: boolean
/** The minimum longitudinal and latitudinal span the map should display. */
minimumSpan?: CoordinateSpan
/** Spacing that is added around the computed map region when showing items. */
padding: Padding
}
class MapPoint
{
constructor(x: number, y: number)
/** The location of the point along the x-axis of the map. */
x: number
/** The location of the point along the y-axis of the map. */
y: number
/** Returns a copy of a map point. */
copy: MapPoint
/** Indicates whether two map points are equal. */
equals(other: MapPoint): boolean
/** Returns a coorindate containing the latitude and longitude corresponding to a map point. */
toCoordinate(): Coordinate
}
/** A pair of values in map units that define the width and height of a projected coordinate span. */
class MapSize
{
constructor(width: number, height: number)
width: number
height: number
}
/** A rectangular area on a two-dimensional map projection. */
class MapRect
{
constructor(x: number, y: number, width: number, height: number);
/** The origin point of a rectangle. */
origin: MapPoint
/** The width and height of a rectangle, starting from the origin point. */
size: MapSize
/** The maximum x-axis value of a rectangle. */
maxX: number
/** The maximum y-axis value of a rectangle. */
maxY: number
/** The mid-point along the x-axis of a rectangle. */
midX: number
/** The mid-point along the y-axis of a rectangle.*/
midY: number
/** The minimum x-axis value of a rectangle. */
minX: number
/** The minimum y-axis value of a rectangle. */
minY: number
/** Returns a copy of a map rectangle. */
copy(): MapRect
/** Indicates whether two map rectangles are equal. */
equals(other: MapRect): boolean
scale(scaleFactor: number, scaleCenter: MapPoint);
/** Returns the region that corresponds to a map rectangle. */
toCoordinateRegion(): CoordinateRegion
}
/** A rectangular area on a map defined by a center coordinate and a span, expressed in degrees of latitude and longitude. */
class CoordinateRegion
{
constructor(center: Coordinate, span: CoordinateSpan);
/** The center point of the region. */
center: Coordinate
/** The horizontal and vertical span representing the amount of map to display. */
span: CoordinateSpan
/** Returns a copy of this region. */
copy(): CoordinateRegion
/** Returns a Boolean value indicating whether two regions are equal. */
equals(other: CoordinateRegion): boolean
/** Returns the bounding region that corresponds to this region. */
toBoundingRegion(): BoundingRegion
/** Returns the map rectangle that corresponds to the region. */
toMapRect(): MapRect
}
/** The width and height of a map region. */
class CoordinateSpan
{
constructor( latitudeDelta: number, longitudeDelta: number);
/** The amount of north-to-south distance (measured in degrees) to display on the map. */
latitudeDelta: number
/** The amount of east-to-west distance (measured in degrees) to display for the map region. */
longitudeDelta: number
copy(): CoordinateSpan
equals(other: CoordinateSpan): boolean
}
/** A rectangular area on a map, defined by coordinates of the rectangle's northeast and southwest corners. */
class BoundingRegion
{
constructor( northLatitude: number, eastLongitude: number, southLatitude: number, westLongitude: number);
northLatitude: number
eastLongitude: number
southLatitude: number
westLongitude: number
copy(): BoundingRegion
toCoordinateRegion(): CoordinateRegion
}
interface PaddingConstructorOptions
{
bottom: number
left: number
right: number
top: number
}
class Padding
{
constructor(options?: PaddingConstructorOptions|number[] )
bottom: number
left: number
right: number
top: number
}
interface AnnotationConstructorOptions
{
/** Data that you define that is assigned to the annotation. */
data?: any
/** The text to display in the annotation's callout. */
title?: string
/** The text to display as a subtitle, on the second line of an annotation's callout. */
subtitle?: string
/** The offset in CSS pixels of the element from the bottom center. */
anchorOffset?: DOMPoint
/** A CSS animation that runs when the annotation appears on the map. */
appearanceAnimation?: string
/** A hint that provides the priority of displaying the annotation. */
displayPriority?: number
/** The desired dimensions of the annotation, in CSS pixels. */
size?: any
/** A Boolean value that determines if the annotation is visible or hidden. */
visible?: boolean
/** A Boolean value that determines if the annotation should be animated. */
animates?: boolean
/** A Boolean value that determines whether the user can drag the annotation. */
draggable?: boolean
/** A Boolean value that determines whether the annotation responds to user interaction. */
enabled?: boolean
/** A Boolean value that determines whether the annotation is selected. */
selected?: boolean
/** A delegate that enables you to customize the callout for the annotation. */
callout?: AnnotationCalloutDelegate
/** A Boolean value that determines whether a callout should be shown. */
calloutEnabled?: boolean
/** The offset in CSS pixels of a callout from the top center of the element. */
calloutOffset?: DOMPoint
clusteringIdentifier?: string
collisionMode?: string
accessibilityLabel?: string
}
/**
* The base object for annotations, used when creating custom annotations.
*/
class Annotation
{
constructor(coordinate: Coordinate, factory: Function, options?: AnnotationConstructorOptions );
addEventListener(type:string, listener: (Annotation) => void, thisObject?: any);
/** Removes an event listener. */
removeEventListener(type:string, listener: (Annotation) => void, thisObject?: any);
/** The annotation's coordinate. */
coordinate: Coordinate
/** Data that you define that is assigned to the annotation. */
data: any
/** The text to display in the annotation's callout. */
title: string
/** The text to display as a subtitle, on the second line of an annotation's callout. */
subtitle: string
anchorOffset: DOMPoint
appearanceAnimation: string
displayPriority: number
size: any
visible: boolean
animates: boolean
draggable: boolean
selected: boolean
enabled: boolean
map: Map
/** The annotation's element in the DOM. */
element: Element
/** The callout delegate is an optional object that implements methods used to customize the appearance, content and animations of the callout appearing when the annotation is selected. */
callout: AnnotationCalloutDelegate
calloutEnabled: boolean
calloutOffset: DOMPoint
memberAnnotations: Annotation[]
clusteringIdentifier: string
collisionMode: string
accessibilityLabel: string
}
class MarkerAnnotation extends Annotation
{
constructor(coordinate: Coordinate, options?: MarkerAnnotationConstructorOptions)
/** The fill color of the marker. */
color: string
/** The fill color of the glyph. */
glyphColor: string
/** The images to display in the marker. */
glyphImage: any
/** The text to display in the marker. */
glyphText: string
/** The images to display in the balloon when the user selects the annotation. */
selectedGlyphImage: any
/** A value that determines when the subtitle is visible. */
subtitleVisibility: FeatureVisibility
/** A value that determines when the title is visible. */
titleVisibility: FeatureVisibility
}
interface MarkerAnnotationConstructorOptions extends AnnotationConstructorOptions
{
/** The fill color of the marker. */
color?: string
/** The fill color of the glyph. */
glyphColor?: string
/** The images to display in the marker. */
glyphImage?: any
/** The text to display in the marker. */
glyphText?: string
/** The images to display in the balloon when the user selects the annotation. */
selectedGlyphImage?: any
/** A value that determines when the subtitle is visible. */
subtitleVisibility?: FeatureVisibility
/** A value that determines when the title is visible. */
titleVisibility?: FeatureVisibility
}
/** A customized annotation with image resources that you provide. */
class ImageAnnotation extends Annotation
{
constructor(coordinate: Coordinate, options?: ImageAnnotationConstructorOptions)
/** An object containing URLs for the image assets in multiple resolutions.
* eg:
* url: {
* 1: "foo.png",
* 2: "foo_2x.png",
* 3: "foo_3x.png"
* }
*/
url: any
}
interface ImageAnnotationConstructorOptions extends AnnotationConstructorOptions
{
/** An object containing URLs for the image assets in multiple resolutions.
* eg:
* url: {
* 1: "foo.png",
* 2: "foo_2x.png",
* 3: "foo_3x.png"
* }
*/
url: any
}
enum FeatureVisibility
{
/** Indicates that a map feature adapts to the current map state. */
Adaptive = 'Adaptive',
/** Indicates that a map feature is always hidden */
Hidden = 'Hidden',
/** Indicates that a map feature is always visible.n */
Visible = 'Visible'
}
interface AnnotationCalloutDelegate
{
// TODO:
/*
Customizing Callout Appearance
calloutAnchorOffsetForAnnotation
calloutShouldAppearForAnnotation
calloutShouldAnimateForAnnotation
calloutAppearanceAnimationForAnnotation
Providing Elements
calloutContentForAnnotation
calloutElementForAnnotation
calloutLeftAccessoryForAnnotation
calloutRightAccessoryForAnnotation
*/
}
class Overlay
{
// TODO
}
class CircleOverlay extends Overlay
{
// TODO
}
class PolylineOverlay extends Overlay
{
// TODO
}
class PolygonOverlay extends Overlay
{
// TODO
}
class TileOverlay
{
// TODO
}
interface GeocoderConstructorOptions
{
getsUserLocation?: boolean
language?: string
}
interface GeocodeResponse
{
results: Place[]
}
interface GeocoderLookupOptions
{
coordinate?: Coordinate
language?: string
/** Tell the geocoder to return results within a list of countries. Countries in the list are specified with two-letter country codes. For example, constrain the geocoder to return results in Australia and New Zealand with { limitToCountries: "AU, NZ" }. */
limitToCountries?: string
region?: CoordinateRegion
}
interface GeocoderReverseLookupOptions
{
language?: string
}
interface Place
{
/** The name of this place. */
name: string
/** The address of this place, formatted to the conventions of the place's country. */
formattedAddress: string
/** The country associated with this place, denoted by the standard abbreviation used to refer to the country. For example, if the place was was Apple Park, the value for this property would be the string “US”. */
countryCode
/** The latitude and longitude for this place. */
coordinate: Coordinate
/** The geographic region associated with the place. */
region: CoordinateRegion
}
class Geocoder
{
constructor( options?: GeocoderConstructorOptions );
getsUserLocation: boolean
language: string
lookup ( place: string, callback: (error, data: GeocodeResponse) => void, options?: GeocoderLookupOptions ): number;
reverseLookup (coordinate: Coordinate, callback: (error, data: GeocodeResponse) => void, options?: GeocoderReverseLookupOptions );
/** A geocoding request can be cancelled by ID. */
cancel (id: number);
}
interface SearchConstructorOptions
{
/** A map coordinate that provides a hint for the geographic area to search. */
coordinate?: Coordinate
/** A Boolean value that indicates whether to limit the search results to the user's current location, as determined by the web browser. */
getsUserLocation?: boolean
/** A language ID that determines the language for the search result text. */
language?: string
/** A map region that provides a hint for the geographic area to search. In a map application, this is typically the region displayed in the map. */
region?: CoordinateRegion
}
interface SearchResponse
{
/** A list of places that match the search query. */
places: Place[]
/** The query string used to perform the search. */
query?: string
/** The region that encloses the places included in the search results. This property is not present if there are no results. */
boundingRegion?: CoordinateRegion
}
interface SearchOptions
{
coordinate?: Coordinate
language?: string
/** A map region that provides a hint for the geographic area to search. */
region?: CoordinateRegion
}
interface SearchAutocompleteResult
{
/** The coordinate of the result, provided when it corresponds to a single place. */
coordinate?: Coordinate
/** Lines of text to display to the user in an autocomplete menu. */
displayLines: string[]
}
interface SearchAutocompleteResponse
{
query: string
results: SearchAutocompleteResult[]
}
/** An object or callback function you provide that is called when performing a search or autocomplete request. */
interface SearchDelegate
{
/** Tells the delegate that the autocomplete request completed. */
autocompleteDidComplete?(data: SearchAutocompleteResponse );
/** Tells the delegate that the autocomplete request failed due to an error. */
autocompleteDidError?(error: Error);
/** Tells the delegate that the search completed. */
searchDidComplete?(data: SearchResponse );
/** Tells the delegate that the search failed due to an error. */
searchDidError?(error: Error);
}
/** A geocoding request can be cancelled by ID. */
class Search
{
constructor(options?: SearchConstructorOptions)
/** Retrieves the results of a search query. */
search (query: string|SearchAutocompleteResult, callback: SearchDelegate|((error, data: SearchResponse) => void), options?: SearchOptions );
autocomplete (query: string, callback: SearchDelegate|((error, data: SearchAutocompleteResponse) => void), options?: SearchOptions );
}
}
// Is this actually WebKitPoint? confusing
declare class DOMPoint
{
constructor(x: number, y: number)
w: number
x: number
y: number
z: number
}
编辑:截至 2020 年 10 月 26 日 Definitely Typed 具有类型定义。这可能是当时的最佳选择。
npm install --save @types/apple-mapkit-js-browser
感谢贾斯汀的评论。
它在 NPM 上!截至 5 天前。
https://www.npmjs.com/package/mapkit-typescript
使用方法:
npm install --save-dev mapkit-typescript
然后在您的 tsconfig.json
中确保您拥有:
{
"compilerOptions": {
"typeRoots": [
"node_modules/mapkit-typescript",
"node_modules/@types"
]
}
}
值得注意的是,如果您在 2 月 20 日之前安装了他的软件包,则必须向其中添加 node_modes/@types
中的类型。这在他最近的更新和上面发布的说明中得到修复。
在我开始写之前,有没有人看过 Apple MapKit JS 的打字稿定义文件 (.d.ts)?
迫不及待写了一篇。这缺少一些位(方向和叠加层)。随意完成它并将其提交给 DefinitelyTyped 或任何你知道如何做的人。
declare namespace mapkit { class Coordinate { constructor(latitude: number, longitude: number) /** The latitude in degrees. */ latitude: number /** The longitude in degrees. */ longitude: number /** Returns a copy of the coordinate. */ copy(): Coordinate /** Returns a Boolean value indicating whether two coordinates are equal. */ equals(other: Coordinate): boolean /** Returns the map point that corresponds to the coordinate. */ toMapPoint(): MapPoint /** Returns the unwrapped map point that corresponds to the coordinate. */ toUnwrappedMapPoint(): MapPoint } interface MapKitInitOptions { /** * The callback function MapKit JS will invoke to asynchronously obtain an authorization token. * authorizationCallback will be invoked by MapKit JS throughout a session and should be prepared to obtain a new token and pass it to the done function, which will be provided my MapKit JS as the sole argument each time the authorizationCallback function is called. */ authorizationCallback: (done: (string) => void ) => void; language?: string } function init(options: MapKitInitOptions): void; enum MapType { /** A satellite image of the area with road and road name information layered on top. */ Hybrid = 'Hybrid', /** Satellite imagery of the area. */ Satellite = 'Satellite', /** A street map that shows the position of all roads and some road names. */ Standard = 'Standard' } interface MapConstructorOptions { /** The visible area of the map defined in map units. */ visibleMapRect?: MapRect /** The area currently displayed by the map. */ region?: CoordinateRegion /** The map coordinate at the center of the map view. */ center?: Coordinate /** The map's rotation, in degrees. */ rotation?: number /** The CSS color that is used to paint the user interface controls on the map. */ tintColor?: string /** The type of data displayed by the map view. */ mapType?: MapType /** The map's inset margins. */ padding?: Padding /** A Boolean value that determines whether to display a control that lets users choose the map type. */ showsMapTypeControl?: boolean /** A Boolean value that determines whether the user may rotate the map using the compass control or a rotate gesture. */ isRotationEnabled?: boolean /** A feature visibility setting that determines when the compass is visible. */ showsCompass?: FeatureVisibility /** A Boolean value that determines whether the user may zoom in and out on the map using pinch gestures or the zoom control. */ isZoomEnabled?: boolean /** A Boolean value that determines whether to display a control for zooming in and zooming out on a map. */ showsZoomControl?: boolean /** A Boolean value that determines whether the user may scroll the map with a pointing device or gestures on a touchscreen. */ isScrollEnabled?: boolean /** A feature visibility setting that determines when the map's scale is displayed. */ showsScale?: FeatureVisibility /** A delegate method for modifying cluster annotations. */ annotationForCluster?: Annotation /** An array of all the annotations on the map. */ annotations?: Annotation[] /** The annotation on the map that is selected. */ selectedAnnotation?: Annotation|null /** An array of all of the map's overlays. */ overlays?: Overlay[] /** The overlay on the map that is selected. */ selectedOverlay?: Overlay|null /** A Boolean value that determines whether the map displays points of interest. */ showsPointsOfInterest?: boolean /** A Boolean value that determines whether to show the user's location on the map. */ showsUserLocation?: boolean /** A Boolean value that determines whether to center the map on the user's location. */ tracksUserLocation?: boolean /** A Boolean value that determines whether the user location control is visible. */ showsUserLocationControl?: boolean } /** An embeddable interactive map that you add to a webpage. */ class Map { constructor(parent?: string|Element, options?: MapConstructorOptions) /** Adds an event listener to handle events triggered by user interactions and the framework. */ addEventListener(type:string, listener: (Map) => void, thisObject?: any); /** Removes an event listener. */ removeEventListener(type:string, listener: (Map) => void, thisObject?: any); /** A Boolean value that indicates if map rotation is available. */ isRotationAvailable: boolean /** A Boolean value that determines whether the user may rotate the map using the compass control or a rotate gesture. */ isRotationEnabled: boolean /** A Boolean value that determines whether the user may scroll the map with a pointing device or with gestures on a touchscreen. */ isScrollEnabled: boolean /** A Boolean value that determines whether the user may zoom in and out on the map using pinch gestures or the zoom control. */ isZoomEnabled: boolean /** The map coordinate at the center of the map view. */ center: Coordinate /** Centers the map to the provided coordinate, with optional animation. */ setCenterAnimated(coordinate: Coordinate, animate?: boolean): Map; /** The area currently displayed by the map. */ region: CoordinateRegion /** Changes the map's region to the region provided, with optional animation. */ setRegionAnimated(egion: CoordinateRegion, animate?: boolean): Map; /** The map's rotation, in degrees. */ rotation: number /** Changes the map's rotation setting to the number of degrees specified. */ setRotationAnimated(degrees: number, animate?: boolean): Map; /** The visible area of the map defined in map units. */ visibleMapRect: MapRect /** Changes the map's visible map rectangle to the specified map rectangle. */ setVisibleMapRectAnimated(mapRect: MapRect, animate?: boolean): Map; /** The type of data displayed by the map view. */ mapType: MapType /** The map's inset margins. */ padding: Padding /** A feature visibility setting that determines when the compass is visible. */ showsCompass: FeatureVisibility /** A Boolean value that determines whether to display a control that lets users choose the map type. */ showsMapTypeControl: boolean /** A Boolean value that determines whether to display a control for zooming in and zooming out on a map. */ showsZoomControl: boolean /** A Boolean value that determines whether the user location control is visible. */ showsUserLocationControl: boolean /** A Boolean value that determines whether the map displays points of interest. */ showsPointsOfInterest: boolean /** A feature visibility setting that determines when the map's scale is displayed. */ showsScale: FeatureVisibility /** The CSS color that is used to paint the user interface controls on the map. */ tintColor: string /** Adjusts the maps visible region to bring the specified overlays and annotations into view. */ showItems(items: (Annotation|Overlay)[], options?: MapShowItemsOptions ); /** A delegate method for modifying cluster annotations. */ annotationForCluster?: Annotation /** An array of all the annotations on the map. */ annotations?: Annotation[] /** The annotation on the map that is selected. */ selectedAnnotation?: Annotation|null /** Returns the list of annotation objects located in the specified map rectangle. */ annotationsInMapRect(mapRect: MapRect): Annotation[] /** Adds an annotation to the map. */ addAnnotation(annotation: Annotation) /** Adds multiple annotations to the map. */ addAnnotations(annotations: Annotation[]) /** Removes an annotation from the map. */ removeAnnotation(annotation: Annotation) /** Removes multiple annotations from the map. */ removeAnnotations(annotations: Annotation[]) /** An array of all of the map's overlays. */ overlays: Overlay[] /** The overlay on the map that is selected. */ selectedOverlay: Overlay|null /** Returns an array of overlays at a given point on the webpage. */ overlaysAtPoint( point: DOMPoint ): Overlay[] /** Adds an overlay to the map. */ addOverlay(overlay: Overlay); /** Adds multiple overlays to the map. */ addOverlays(overlays: Overlay[]); /** Removes an overlay from the map. */ removeOverlay(overlay: Overlay); /** Removes multiple overlays from the map. */ removeOverlays(overlays: Overlay[]); /** Returns the topmost overlay at a given point on the webpage. */ topOverlayAtPoint( point: DOMPoint ): Overlay /** An array of all of the map's tile overlays. */ tileOverlays: TileOverlay[] /** Adds a tile overlay to the map. */ addTileOverlay(overlay: TileOverlay); /** Adds an array of tile overlays to the map. */ addTileOverlays(overlays: TileOverlay[]); /** Removes a tile overlay from the map. */ removeTileOverlay(overlay: TileOverlay); /** Removes an array of tile overlays from the map. */ removeTileOverlays(overlays: TileOverlay[]); /** A Boolean value that determines whether to show the user's location on the map. */ showsUserLocation: boolean /** A Boolean value that determines whether to center the map on the user's location. */ tracksUserLocation: boolean /** An annotation that indicates the user's location on the map. */ userLocationAnnotation: Annotation|null /** Converts a coordinate on the map to a point in the page's coordinate system. */ convertCoordinateToPointOnPage(coordinate: Coordinate): DOMPoint /** Converts a point in page coordinates to the corresponding map coordinate. */ convertPointOnPageToCoordinate(point: DOMPoint): Coordinate /** Removes the map's element from the DOM and releases internal references to this map to free up memory. */ destroy(): void /** The map's DOM element. */ element: Element } interface MapShowItemsOptions { /** A Boolean value that determines whether the map is animated as the map region changes to show the items. */ animate?: boolean /** The minimum longitudinal and latitudinal span the map should display. */ minimumSpan?: CoordinateSpan /** Spacing that is added around the computed map region when showing items. */ padding: Padding } class MapPoint { constructor(x: number, y: number) /** The location of the point along the x-axis of the map. */ x: number /** The location of the point along the y-axis of the map. */ y: number /** Returns a copy of a map point. */ copy: MapPoint /** Indicates whether two map points are equal. */ equals(other: MapPoint): boolean /** Returns a coorindate containing the latitude and longitude corresponding to a map point. */ toCoordinate(): Coordinate } /** A pair of values in map units that define the width and height of a projected coordinate span. */ class MapSize { constructor(width: number, height: number) width: number height: number } /** A rectangular area on a two-dimensional map projection. */ class MapRect { constructor(x: number, y: number, width: number, height: number); /** The origin point of a rectangle. */ origin: MapPoint /** The width and height of a rectangle, starting from the origin point. */ size: MapSize /** The maximum x-axis value of a rectangle. */ maxX: number /** The maximum y-axis value of a rectangle. */ maxY: number /** The mid-point along the x-axis of a rectangle. */ midX: number /** The mid-point along the y-axis of a rectangle.*/ midY: number /** The minimum x-axis value of a rectangle. */ minX: number /** The minimum y-axis value of a rectangle. */ minY: number /** Returns a copy of a map rectangle. */ copy(): MapRect /** Indicates whether two map rectangles are equal. */ equals(other: MapRect): boolean scale(scaleFactor: number, scaleCenter: MapPoint); /** Returns the region that corresponds to a map rectangle. */ toCoordinateRegion(): CoordinateRegion } /** A rectangular area on a map defined by a center coordinate and a span, expressed in degrees of latitude and longitude. */ class CoordinateRegion { constructor(center: Coordinate, span: CoordinateSpan); /** The center point of the region. */ center: Coordinate /** The horizontal and vertical span representing the amount of map to display. */ span: CoordinateSpan /** Returns a copy of this region. */ copy(): CoordinateRegion /** Returns a Boolean value indicating whether two regions are equal. */ equals(other: CoordinateRegion): boolean /** Returns the bounding region that corresponds to this region. */ toBoundingRegion(): BoundingRegion /** Returns the map rectangle that corresponds to the region. */ toMapRect(): MapRect } /** The width and height of a map region. */ class CoordinateSpan { constructor( latitudeDelta: number, longitudeDelta: number); /** The amount of north-to-south distance (measured in degrees) to display on the map. */ latitudeDelta: number /** The amount of east-to-west distance (measured in degrees) to display for the map region. */ longitudeDelta: number copy(): CoordinateSpan equals(other: CoordinateSpan): boolean } /** A rectangular area on a map, defined by coordinates of the rectangle's northeast and southwest corners. */ class BoundingRegion { constructor( northLatitude: number, eastLongitude: number, southLatitude: number, westLongitude: number); northLatitude: number eastLongitude: number southLatitude: number westLongitude: number copy(): BoundingRegion toCoordinateRegion(): CoordinateRegion } interface PaddingConstructorOptions { bottom: number left: number right: number top: number } class Padding { constructor(options?: PaddingConstructorOptions|number[] ) bottom: number left: number right: number top: number } interface AnnotationConstructorOptions { /** Data that you define that is assigned to the annotation. */ data?: any /** The text to display in the annotation's callout. */ title?: string /** The text to display as a subtitle, on the second line of an annotation's callout. */ subtitle?: string /** The offset in CSS pixels of the element from the bottom center. */ anchorOffset?: DOMPoint /** A CSS animation that runs when the annotation appears on the map. */ appearanceAnimation?: string /** A hint that provides the priority of displaying the annotation. */ displayPriority?: number /** The desired dimensions of the annotation, in CSS pixels. */ size?: any /** A Boolean value that determines if the annotation is visible or hidden. */ visible?: boolean /** A Boolean value that determines if the annotation should be animated. */ animates?: boolean /** A Boolean value that determines whether the user can drag the annotation. */ draggable?: boolean /** A Boolean value that determines whether the annotation responds to user interaction. */ enabled?: boolean /** A Boolean value that determines whether the annotation is selected. */ selected?: boolean /** A delegate that enables you to customize the callout for the annotation. */ callout?: AnnotationCalloutDelegate /** A Boolean value that determines whether a callout should be shown. */ calloutEnabled?: boolean /** The offset in CSS pixels of a callout from the top center of the element. */ calloutOffset?: DOMPoint clusteringIdentifier?: string collisionMode?: string accessibilityLabel?: string } /** * The base object for annotations, used when creating custom annotations. */ class Annotation { constructor(coordinate: Coordinate, factory: Function, options?: AnnotationConstructorOptions ); addEventListener(type:string, listener: (Annotation) => void, thisObject?: any); /** Removes an event listener. */ removeEventListener(type:string, listener: (Annotation) => void, thisObject?: any); /** The annotation's coordinate. */ coordinate: Coordinate /** Data that you define that is assigned to the annotation. */ data: any /** The text to display in the annotation's callout. */ title: string /** The text to display as a subtitle, on the second line of an annotation's callout. */ subtitle: string anchorOffset: DOMPoint appearanceAnimation: string displayPriority: number size: any visible: boolean animates: boolean draggable: boolean selected: boolean enabled: boolean map: Map /** The annotation's element in the DOM. */ element: Element /** The callout delegate is an optional object that implements methods used to customize the appearance, content and animations of the callout appearing when the annotation is selected. */ callout: AnnotationCalloutDelegate calloutEnabled: boolean calloutOffset: DOMPoint memberAnnotations: Annotation[] clusteringIdentifier: string collisionMode: string accessibilityLabel: string } class MarkerAnnotation extends Annotation { constructor(coordinate: Coordinate, options?: MarkerAnnotationConstructorOptions) /** The fill color of the marker. */ color: string /** The fill color of the glyph. */ glyphColor: string /** The images to display in the marker. */ glyphImage: any /** The text to display in the marker. */ glyphText: string /** The images to display in the balloon when the user selects the annotation. */ selectedGlyphImage: any /** A value that determines when the subtitle is visible. */ subtitleVisibility: FeatureVisibility /** A value that determines when the title is visible. */ titleVisibility: FeatureVisibility } interface MarkerAnnotationConstructorOptions extends AnnotationConstructorOptions { /** The fill color of the marker. */ color?: string /** The fill color of the glyph. */ glyphColor?: string /** The images to display in the marker. */ glyphImage?: any /** The text to display in the marker. */ glyphText?: string /** The images to display in the balloon when the user selects the annotation. */ selectedGlyphImage?: any /** A value that determines when the subtitle is visible. */ subtitleVisibility?: FeatureVisibility /** A value that determines when the title is visible. */ titleVisibility?: FeatureVisibility } /** A customized annotation with image resources that you provide. */ class ImageAnnotation extends Annotation { constructor(coordinate: Coordinate, options?: ImageAnnotationConstructorOptions) /** An object containing URLs for the image assets in multiple resolutions. * eg: * url: { * 1: "foo.png", * 2: "foo_2x.png", * 3: "foo_3x.png" * } */ url: any } interface ImageAnnotationConstructorOptions extends AnnotationConstructorOptions { /** An object containing URLs for the image assets in multiple resolutions. * eg: * url: { * 1: "foo.png", * 2: "foo_2x.png", * 3: "foo_3x.png" * } */ url: any } enum FeatureVisibility { /** Indicates that a map feature adapts to the current map state. */ Adaptive = 'Adaptive', /** Indicates that a map feature is always hidden */ Hidden = 'Hidden', /** Indicates that a map feature is always visible.n */ Visible = 'Visible' } interface AnnotationCalloutDelegate { // TODO: /* Customizing Callout Appearance calloutAnchorOffsetForAnnotation calloutShouldAppearForAnnotation calloutShouldAnimateForAnnotation calloutAppearanceAnimationForAnnotation Providing Elements calloutContentForAnnotation calloutElementForAnnotation calloutLeftAccessoryForAnnotation calloutRightAccessoryForAnnotation */ } class Overlay { // TODO } class CircleOverlay extends Overlay { // TODO } class PolylineOverlay extends Overlay { // TODO } class PolygonOverlay extends Overlay { // TODO } class TileOverlay { // TODO } interface GeocoderConstructorOptions { getsUserLocation?: boolean language?: string } interface GeocodeResponse { results: Place[] } interface GeocoderLookupOptions { coordinate?: Coordinate language?: string /** Tell the geocoder to return results within a list of countries. Countries in the list are specified with two-letter country codes. For example, constrain the geocoder to return results in Australia and New Zealand with { limitToCountries: "AU, NZ" }. */ limitToCountries?: string region?: CoordinateRegion } interface GeocoderReverseLookupOptions { language?: string } interface Place { /** The name of this place. */ name: string /** The address of this place, formatted to the conventions of the place's country. */ formattedAddress: string /** The country associated with this place, denoted by the standard abbreviation used to refer to the country. For example, if the place was was Apple Park, the value for this property would be the string “US”. */ countryCode /** The latitude and longitude for this place. */ coordinate: Coordinate /** The geographic region associated with the place. */ region: CoordinateRegion } class Geocoder { constructor( options?: GeocoderConstructorOptions ); getsUserLocation: boolean language: string lookup ( place: string, callback: (error, data: GeocodeResponse) => void, options?: GeocoderLookupOptions ): number; reverseLookup (coordinate: Coordinate, callback: (error, data: GeocodeResponse) => void, options?: GeocoderReverseLookupOptions ); /** A geocoding request can be cancelled by ID. */ cancel (id: number); } interface SearchConstructorOptions { /** A map coordinate that provides a hint for the geographic area to search. */ coordinate?: Coordinate /** A Boolean value that indicates whether to limit the search results to the user's current location, as determined by the web browser. */ getsUserLocation?: boolean /** A language ID that determines the language for the search result text. */ language?: string /** A map region that provides a hint for the geographic area to search. In a map application, this is typically the region displayed in the map. */ region?: CoordinateRegion } interface SearchResponse { /** A list of places that match the search query. */ places: Place[] /** The query string used to perform the search. */ query?: string /** The region that encloses the places included in the search results. This property is not present if there are no results. */ boundingRegion?: CoordinateRegion } interface SearchOptions { coordinate?: Coordinate language?: string /** A map region that provides a hint for the geographic area to search. */ region?: CoordinateRegion } interface SearchAutocompleteResult { /** The coordinate of the result, provided when it corresponds to a single place. */ coordinate?: Coordinate /** Lines of text to display to the user in an autocomplete menu. */ displayLines: string[] } interface SearchAutocompleteResponse { query: string results: SearchAutocompleteResult[] } /** An object or callback function you provide that is called when performing a search or autocomplete request. */ interface SearchDelegate { /** Tells the delegate that the autocomplete request completed. */ autocompleteDidComplete?(data: SearchAutocompleteResponse ); /** Tells the delegate that the autocomplete request failed due to an error. */ autocompleteDidError?(error: Error); /** Tells the delegate that the search completed. */ searchDidComplete?(data: SearchResponse ); /** Tells the delegate that the search failed due to an error. */ searchDidError?(error: Error); } /** A geocoding request can be cancelled by ID. */ class Search { constructor(options?: SearchConstructorOptions) /** Retrieves the results of a search query. */ search (query: string|SearchAutocompleteResult, callback: SearchDelegate|((error, data: SearchResponse) => void), options?: SearchOptions ); autocomplete (query: string, callback: SearchDelegate|((error, data: SearchAutocompleteResponse) => void), options?: SearchOptions ); } } // Is this actually WebKitPoint? confusing declare class DOMPoint { constructor(x: number, y: number) w: number x: number y: number z: number }
编辑:截至 2020 年 10 月 26 日 Definitely Typed 具有类型定义。这可能是当时的最佳选择。
npm install --save @types/apple-mapkit-js-browser
感谢贾斯汀的评论。
它在 NPM 上!截至 5 天前。
https://www.npmjs.com/package/mapkit-typescript
使用方法:
npm install --save-dev mapkit-typescript
然后在您的 tsconfig.json
中确保您拥有:
{
"compilerOptions": {
"typeRoots": [
"node_modules/mapkit-typescript",
"node_modules/@types"
]
}
}
值得注意的是,如果您在 2 月 20 日之前安装了他的软件包,则必须向其中添加 node_modes/@types
中的类型。这在他最近的更新和上面发布的说明中得到修复。