@ capacor/ google- maps
Capacitor 上的 Google 地图
安装
npm install @capacitor/google-maps
npx cap sync
API 密钥
要在任意平台上使用 Google Maps SDK, 与账户相关的 API 密钥 启用计费 需要这样做。 这些都可以从下列来源获得: 谷歌云控台。所有三个平台,Android、iOS和Javascript都需要这样做。 关于获取这些 API 密钥的更多信息,请访问 Google 地图文档 每个平台.
iOS系统
Google Maps SDK 支持通过 enableCurrentLocation(bool)。要使用此功能,苹果公司需要指定隐私描述 Info.plist数字 :
NSLocationWhenInUseUsageDescription (单位:千美元)Privacy - Location When In Use Usage Description(中文(简体) )
阅读 配置 Info.plist 输入 iOS 指南 在 Xcode 中设置 iOS 权限的更多信息.
键入符配置
你的项目也需要 skipLibCheck 设置为 true 内 tsconfig.json。 。 。 .
从旧版本迁移
Google Maps SDK主要支持在苹果硅Macs上的模拟器上运行,但要确保您有最新版本的 谷歌- 马普斯- iOS- Utils 已安装.
如果您为获得未发行版本添加了先前的工作环路, 您可以删除此行 ios/App/Podfile数字 :
pod 'Google-Maps-iOS-Utils', :git => 'https://github.com/googlemaps/google-maps-ios-utils.git', :commit => '637954e5bcb2a879c11a6f2cead153a6bad5339f'
然后运行 pod update Google-Maps-iOS-Utils 从 ios/App/ 文件夹 :
cd ios/App
pod update Google-Maps-iOS-Utils
机器人
Android的Google Maps SDK需要您将您的API密钥添加到您的项目中的AndroidManifest.xml文件中.
<meta-data android:name="com.google.android.geo.API_KEY" android:value="YOUR_API_KEY_HERE"/>
要使用某些位置特性, SDK 需要以下权限才能添加到您的 AndroidManifest.xml 中:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
变量
此插件将使用以下工程变量( 在您的应用程序中定义) variables.gradle 文件名 :
googleMapsPlayServicesVersion页:1 com.google.android.gms:play-services-maps (默认 : 19.2.0(中文(简体) )
googleMapsUtilsVersion页:1 com.google.maps.android:android-maps-utils (默认 : 3.19.1(中文(简体) )
googleMapsKtxVersion页:1 com.google.maps.android:maps-ktx (默认 : 5.2.1(中文(简体) )
googleMapsUtilsKtxVersion页:1 com.google.maps.android:maps-utils-ktx (默认 : 5.2.1(中文(简体) )
kotlinxCoroutinesVersion页:1 org.jetbrains.kotlinx:kotlinx-coroutines-android 财务报告和审定财务报表 org.jetbrains.kotlinx:kotlinx-coroutines-core (默认 : 1.10.2(中文(简体) )
androidxCoreKTXVersion页:1 androidx.core:core-ktx (默认 : 1.17.0(中文(简体) )
kotlin_version页:1 org.jetbrains.kotlin:kotlin-stdlib (默认 : 2.2.20(中文(简体) )
使用量
Google Maps Capacitor 插件船, 带有网络组件, 必须用于在您的应用程序中渲染地图, 因为它使我们能够更有效地将本地视图嵌入到 iOS 上 。 插件将自动注册此网页组件供您在应用程序中使用 .
对于角用户,您会得到一个错误警告,这个网络组件对于角编译器来说是未知的. 通过修改宣布您组件的模块以允许自定义的网络组件来解决这个问题.
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
@NgModule({
schemas: [CUSTOM_ELEMENTS_SCHEMA]
})
在您的 HTML 中包含此组件, 并指定一个ID, 以便您以后可以轻松查询该元素引用 .
<capacitor-google-map id="map"></capacitor-google-map>
在Android上,地图会在整个网页视图下渲染出,并在滚动事件期间使用此组件来管理其定位. 这意味着作为开发者,你 必须 确保网页视图的透明性贯穿各层至最下层。 在一个典型的Ionic应用中,这意味着在IonContent和根 HTML标签等元素上设定透明度,以确保可以看到. 如果你在Android上看不到地图,这应该是你检查的第一件事.
在iOS上,我们直接将地图放入网页视图,因此不需要同样的透明度效果. 我们正在调查Android的替代方法,希望在未来更新中能更好地解决这个问题.
Google Map 元素本身没有风格化,所以您应该将其风格化以适应您页面结构的布局. 因为我们把一个视图放进这个槽里, 元素本身没有宽度或高度, 所以请明确设置这些.
capacitor-google-map {
display: inline-block;
width: 275px;
height: 400px;
}
接下来,我们应该创建地图参考。 其方法是从Capacitor插件中导入GoogleMap类,并调用创建方法,并传入需要的参数.
import { GoogleMap } from '@capacitor/google-maps';
const apiKey = 'YOUR_API_KEY_HERE';
const mapRef = document.getElementById('map');
const newMap = await GoogleMap.create({
id: 'my-map', // Unique identifier for this map instance
element: mapRef, // reference to the capacitor-google-map element
apiKey: apiKey, // Your Google Maps API Key
config: {
center: {
// The initial position to be rendered by the map
lat: 33.6,
lng: -117.9,
},
zoom: 8, // The initial zoom level to be rendered by the map
},
});
此时, 您的地图应该在您的应用中创建 。 使用返回到地图的引用,您可以轻松地以多种方式与您的地图交互,其中的几个在这里显示.
const newMap = await GoogleMap.create({...});
// Add a marker to the map
const markerId = await newMap.addMarker({
coordinate: {
lat: 33.6,
lng: -117.9
}
});
// Move the map programmatically
await newMap.setCamera({
coordinate: {
lat: 33.6,
lng: -117.9
}
});
// Enable marker clustering
await newMap.enableClustering();
// Handle marker click
await newMap.setOnMarkerClickListener((event) => {...});
// Clean up map reference
await newMap.destroy();
完整示例
角质
import { GoogleMap } from '@capacitor/google-maps';
@Component({
template: `
<capacitor-google-map #map></capacitor-google-map>
<button (click)="createMap()">Create Map</button>
`,
styles: [
`
capacitor-google-map {
display: inline-block;
width: 275px;
height: 400px;
}
`,
],
})
export class MyMap {
@ViewChild('map')
mapRef: ElementRef<HTMLElement>;
newMap: GoogleMap;
async createMap() {
this.newMap = await GoogleMap.create({
id: 'my-cool-map',
element: this.mapRef.nativeElement,
apiKey: environment.apiKey,
config: {
center: {
lat: 33.6,
lng: -117.9,
},
zoom: 8,
},
});
}
}
反应
import { GoogleMap } from '@capacitor/google-maps';
import { useRef } from 'react';
const MyMap: React.FC = () => {
const mapRef = useRef<HTMLElement>();
let newMap: GoogleMap;
async function createMap() {
if (!mapRef.current) return;
newMap = await GoogleMap.create({
id: 'my-cool-map',
element: mapRef.current,
apiKey: process.env.REACT_APP_YOUR_API_KEY_HERE,
config: {
center: {
lat: 33.6,
lng: -117.9
},
zoom: 8
}
})
}
return (
<div className="component-wrapper">
<capacitor-google-map ref={mapRef} style={{
display: 'inline-block',
width: 275,
height: 400
}}></capacitor-google-map>
<button onClick={createMap}>Create Map</button>
</div>
)
}
export default MyMap;
您可能需要创建一个 *.d.ts react 中自定义元素的文件 :
// custom-elements.d.ts
declare module "react" {
namespace JSX {
interface IntrinsicElements {
"capacitor-google-map": React.DetailedHTMLProps<
React.HTMLAttributes<HTMLElement>,
HTMLElement
>;
}
}
}
export {};
阴道
<script lang="ts" setup>
import { ref, shallowRef, useTemplateRef } from 'vue'
import { GoogleMap } from '@capacitor/google-maps'
const mapRef = useTemplateRef<HTMLElement>('mapRef')
const newMap = shallowRef<GoogleMap>()
async function createMap() {
if (!mapRef.value) return
newMap.value = await GoogleMap.create({
id: 'my-cool-map',
element: mapRef.value,
apiKey: import.meta.env.VITE_YOUR_API_KEY_HERE,
config: {
center: {
lat: 33.6,
lng: -117.9,
},
zoom: 8,
},
})
}
</script>
<template>
<capacitor-google-map
ref="mapRef"
style="display: inline-block; width: 275px; height: 400px"
></capacitor-google-map>
<button @click="createMap()">Create Map</button>
</template>
确保您需要启用 承认本地习惯元素 喜欢
// vite.config.mts > plugins
Vue({
template: {
compilerOptions: {
isCustomElement: (tag) => tag.startsWith('capacitor-')
},
},
}),
Javascript
<capacitor-google-map id="map"></capacitor-google-map>
<button onclick="createMap()">Create Map</button>
<style>
capacitor-google-map {
display: inline-block;
width: 275px;
height: 400px;
}
</style>
<script>
import { GoogleMap } from '@capacitor/google-maps';
const createMap = async () => {
const mapRef = document.getElementById('map');
const newMap = await GoogleMap.create({
id: 'my-map', // Unique identifier for this map instance
element: mapRef, // reference to the capacitor-google-map element
apiKey: 'YOUR_API_KEY_HERE', // Your Google Maps API Key
config: {
center: {
// The initial position to be rendered by the map
lat: 33.6,
lng: -117.9,
},
zoom: 8, // The initial zoom level to be rendered by the map
},
});
};
</script>
API 密码
创建(...)
create(options: CreateMapArgs, callback?: MapListenerCallback<MapReadyCallbackData> | undefined) => Promise<GoogleMap>
回返情况: Promise<GoogleMap>
启用Touch( )
enableTouch() => Promise<void>
禁用Touch( )
disableTouch() => Promise<void>
启用组合(...)
enableClustering(minClusterSize?: number | undefined) => Promise<void>
| 参数 | 类型 | 说明 |
minClusterSize | number | 可组合在一起的最小标记数量. 默认为4个标记. |
禁用分类( C)
disableClustering() => Promise<void>
添加 Tile 覆盖(...)
addTileOverlay(tileOverlay: TileOverlay) => Promise<{ id: string; }>
回返情况: Promise<{ id: string; }>
删除 Tile 覆盖(...)
removeTileOverlay(id: string) => Promise<void>
添加马克(...)
addMarker(marker: Marker) => Promise<string>
回返情况: Promise<string>
添加马克(...)
addMarkers(markers: Marker[]) => Promise<string[]>
回返情况: Promise<string[]>
删除马克(...)
removeMarker(id: string) => Promise<void>
删除马克(...)
removeMarkers(ids: string[]) => Promise<void>
添加波利贡斯(...)
addPolygons(polygons: Polygon[]) => Promise<string[]>
回返情况: Promise<string[]>
删除波利贡斯(...)
removePolygons(ids: string[]) => Promise<void>
添加循环(...)
addCircles(circles: Circle[]) => Promise<string[]>
回返情况: Promise<string[]>
删除圆环(...)
removeCircles(ids: string[]) => Promise<void>
添加 Polylines (...)
addPolylines(polylines: Polyline[]) => Promise<string[]>
回返情况: Promise<string[]>
删除 Polylines (...)
removePolylines(ids: string[]) => Promise<void>
销毁()
destroy() => Promise<void>
设置 Camera (...)
setCamera(config: CameraConfig) => Promise<void>
获取MapType ()
getMapType() => Promise<MapType>
获取当前映射类型
回返情况: Promise<MapType>
设置MapType(...)
setMapType(mapType: MapType) => Promise<void>
启用室内地图(...)
enableIndoorMaps(enabled: boolean) => Promise<void>
启用 TrafficLayer (...)
enableTrafficLayer(enabled: boolean) => Promise<void>
启用可获取性元素(...)
enableAccessibilityElements(enabled: boolean) => Promise<void>
启用当前位置(...)
enableCurrentLocation(enabled: boolean) => Promise<void>
设定板(...)
setPadding(padding: MapPadding) => Promise<void>
获取地图框( )
getMapBounds() => Promise<LatLngBounds>
获取地图当前取景口纬度和经度界限.
回返情况: Promise<LatLngBounds>
适界(...)
fitBounds(bounds: LatLngBounds, padding?: number | undefined) => Promise<void>
设置地图视图端口以包含给定的界限.
| 参数 | 类型 | 说明 |
bounds | LatLngBounds | 入取地相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相. |
padding | number | 以像素形式应用的可选标签 。 界限将适合被删除后留在地图上的部分. |
设置于 BundsChanged listener (...)
setOnBoundsChangedListener(callback?: MapListenerCallback<CameraIdleCallbackData> | undefined) => Promise<void>
设置为 Cameraidle 聆听器(...)
setOnCameraIdleListener(callback?: MapListenerCallback<CameraIdleCallbackData> | undefined) => Promise<void>
设置为 OnCamera Move Started listener (...)
setOnCameraMoveStartedListener(callback?: MapListenerCallback<CameraMoveStartedCallbackData> | undefined) => Promise<void>
设置在 ClusterClick 听器(...)
setOnClusterClickListener(callback?: MapListenerCallback<ClusterClickCallbackData> | undefined) => Promise<void>
设置于 ClusterInfoWindowClick 听取器(...)
setOnClusterInfoWindowClickListener(callback?: MapListenerCallback<ClusterClickCallbackData> | undefined) => Promise<void>
设置于InfoWindowClick 听器(...)
setOnInfoWindowClickListener(callback?: MapListenerCallback<MarkerClickCallbackData> | undefined) => Promise<void>
在MapClick Listener上设置(...)
setOnMapClickListener(callback?: MapListenerCallback<MapClickCallbackData> | undefined) => Promise<void>
设定在 MarkerClick 听取器(...)
setOnMarkerClickListener(callback?: MapListenerCallback<MarkerClickCallbackData> | undefined) => Promise<void>
仅设定为Polygon Click 听取器(...)
setOnPolygonClickListener(callback?: MapListenerCallback<PolygonClickCallbackData> | undefined) => Promise<void>
设置在 CircleClick 听器(...)
setOnCircleClickListener(callback?: MapListenerCallback<CircleClickCallbackData> | undefined) => Promise<void>
仅设置Polyline Click 听取器(...)
setOnPolylineClickListener(callback?: MapListenerCallback<PolylineCallbackData> | undefined) => Promise<void>
设置在 MarkerDragStart 听牌(...)
setOnMarkerDragStartListener(callback?: MapListenerCallback<MarkerClickCallbackData> | undefined) => Promise<void>
设置在 MarkerDrag 听取器上(...)
setOnMarkerDragListener(callback?: MapListenerCallback<MarkerClickCallbackData> | undefined) => Promise<void>
设置于 MarkerDragEnd 听取器(...)
setOnMarkerDragEndListener(callback?: MapListenerCallback<MarkerClickCallbackData> | undefined) => Promise<void>
setOnMyLocationButtonClickListener(callback?: MapListenerCallback<MyLocationButtonClickCallbackData> | undefined) => Promise<void>
设置于 MyLocationClick 听取器(...)
setOnMyLocationClickListener(callback?: MapListenerCallback<MapClickCallbackData> | undefined) => Promise<void>
接口
创建MapArgs
一个包含创建地图时所使用的选项的界面 .
| Prop | 类型 | 说明 | 默认 |
id | string | 映射实例的独有标识符 . | |
apiKey | string | 谷歌地图SDK API密钥. | |
config | GoogleMapConfig | 地图的初始配置设置 . | |
element | HTMLElement | Google地图视图将挂载的DOM元素将决定大小和定位. | |
forceCreate | boolean | 如果已存在带有所提供 id 的地图, 则销毁并重新创建地图实例 | false |
region | string | 区域参数修改您的应用程序, 以服务不同的地图平面或偏差应用程序( 如将地理编码结果偏向区域) 。 仅可用于网络. | |
language | string | 语言参数影响控制名称,版权通知,驱动方向,控制标签,以及对服务请求的回应. 仅可用于网络. | |
GoogleMapConfig 图像
对于网页,所有 Javascript Google 地图选项均可作为
GoogleMapConfig 扩展google.maps. 地图选项.
对于iOS和Android,只声明配置选项 GoogleMapConfig 图像 备有.
| Prop | 类型 | 说明 | 默认 | 自兹 |
width | number | 覆盖本地地图的宽度 . | | |
height | number | 覆盖本地地图的高度 . | | |
x | number | 覆盖本地地图的绝对 x 坐标位置 . | | |
y | number | 覆盖本地地图的绝对位置 . | | |
center | LatLng | 摄影机指向地球的默认位置. | | |
zoom | number | 设置地图的缩放. | | |
androidLiteMode | boolean | 在Android上启用基于图像的lide模式. | false | |
devicePixelRatio | number | 覆盖本地地图的像素比 . | | |
styles | MapTypeStyle[] | null | 适用于每个默认地图类型的样式。 请注意,对于卫星,混合和地形模式,这些样式将只适用于标签和几何. | | 4.3.0 (单位:千美元) |
mapId | string | 与特定地图样式或特征相联的地图 ID. 使用地图标识 只为Web. | | 5.4.0 (单位:千美元) |
androidMapId | string | 与特定地图样式或特征相联的地图 ID. 使用地图标识 只为安卓. | | 5.4.0 (单位:千美元) |
iOSMapId | string | 与特定地图样式或特征相联的地图 ID. 使用地图标识 只为iOS. | | 5.4.0 (单位:千美元) |
maxZoom | number | null | 在地图上显示的最大缩放级别 。 如果省略,或设置为<code>null</code>,则取而代之的是当前地图类型的最大缩放。 有效缩放值是从零到被支持的"(a href=)"https://developers.google.com/maps/documentation/javascript/maxzoom"(最大缩放级)". | | |
minZoom | number | null | 在地图上显示的最小缩放级别 。 如果省略,或设置为<code>null</code>,则使用当前地图类型的最小缩放。 有效缩放值是从零到被支持的"(a href=)"https://developers.google.com/maps/documentation/javascript/maxzoom"(最大缩放级)". | | |
mapTypeId | string | null | 最初的地图TypeId. 默认为<code>ROADMAP</code>. | | |
heading | number | null | 空中影像的航向从北方向顺时针测量 标题断到有图像的最近可用角度. | | |
restriction | MapRestriction | null | 定义限制用户可访问的地图区域的边界。 设定时,一个用户只能在相机视图停留在边界界限内时进行平面和缩放. | | |
连线
代表一对经纬度坐标的接口.
| Prop | 类型 | 说明 |
lat | number | 坐标纬度,单位为度. 此值在范围 [- 90, 90]. |
lng | number | 坐标经纬度,以度为单位. 此值在范围 [-180, 180]. |
映射调回数据
拼图
平板覆盖是放置在您地图上的特定缩放级的图像 。 可在iOS、Android和Web上查阅
| Prop | 类型 | 说明 | 默认 |
url | string | 代表瓷砖 URL 的字符串 。 应包含 {x}, (中文(简体) ), {y} 财务报告和审定财务报表 {z} 因此它们可以被x,y和缩放的实际值所取代. 可在iOS、Android和Web上查阅 | |
opacity | number | 瓦片上覆的不透明,在0(完全透明)到1(包含)之间. 可在iOS、Android和Web上查阅 | undefined |
visible | boolean | 控制此平板覆被是否可见 。 仅在Android上可用 | undefined |
zIndex | number | 砖瓦上覆的zIndex. 可在iOS和Android上查阅 | undefined |
标记
标记是放置在地图表面特定点上的一个图标.
| Prop | 类型 | 说明 | 默认 | 自兹 |
coordinate | LatLng | 标记 职位 | | |
opacity | number | 设置标记的不透明度,介于 0 (完全透明) 和 1 之间. | 1 | |
title | string | 标题 上下文简介. | | |
snippet | string | 片段文本,在选中时在信息窗口的标题下显示 . | | |
isFlat | boolean | 控制这个标记是平地对地表还是面对相机的公告牌. | false | |
iconUrl | string | 要渲染的标记图标的路径 。 它可以是相对于网络应用公共目录,也可以是远程标记图标的https url. SVG不支持在本地平台上. | | 4.2.0 (中文(简体) ) |
iconSize | Size | 控制标记图像设置的缩放大小 iconUrl。 。 。 . | | 4.2.0 (中文(简体) ) |
iconOrigin | Point | 图像在图示中的位置, 如果有的话 。 默认情况下, 来源位于图像左上角 . | | 4.2.0 (中文(简体) ) |
iconAnchor | Point | 将图像与地图上标记位置对应的位置 。 默认情况下,锚地位于图像下方的中心点上. | | 4.2.0 (中文(简体) ) |
tintColor | { r: number; g: number; b: number; a: number; } | 自定义默认标记图像的颜色。 每个值必须在0到255之间. 仅供iOS和Android使用. | | 4.2.0 (中文(简体) ) |
draggable | boolean | 控制此标记是否可以交互拖曳 | false | |
zIndex | number | 指定此标记的堆栈顺序,相对于地图上的其他标记。 高z指数的标记被绘制在下z指数的标记上 | 0 | |
大小
| Prop | 类型 |
width | number |
height | number |
点
多边形
对于网络,所有的javascript 多边形 选项可用
多边形扩展了google.maps. 多边形选项.
对于iOS和Android,只声明配置选项 多边形 备有.
| Prop | 类型 | 说明 |
paths | any[] | MVCArray<any> | 指定闭环的坐标顺序 。 与多线不同,多边形可能由一个或多个路径组成. 因此,路径属性可能指定一个或多个“代码”的数组连线</code>坐标。 路径自动关闭;不要将路径的第一个顶点重复为最后一个顶点. 简单的多边形可以使用一个“ code” 的单数组定义 连线</code>s. (中文(简体) ). 更复杂的多边形可能指定一个数组. 任何简单的阵列都会被转换为"#MVCArray""MVCArray</a></code>s". 插入或删除<代码>连线</code>从 <code>MVCArray </code>自动更新地图上的多边形. |
strokeColor | string | 中风之色. 支持所有 CSS3 颜色,但扩展命名颜色除外. |
strokeOpacity | number | 0至1.0之间的中风不透明 |
strokeWeight | number | 中风宽度以像素表示. |
fillColor | string | 填充颜色. 支持所有 CSS3 颜色,但扩展命名颜色除外. |
fillOpacity | number | 0.0至1.0之间的填充不透明 |
geodesic | boolean | 当 <code> truth </code> 时,多边形边缘被解释为大地测量,并将遵循地球的曲率。 当 <code>false </code> 时,多边形边缘在屏幕空间中作为直线提供。 请注意,大地测量多边形的外形在被拖动时可能会有变化,因为相对于地表,维度会保持不变. |
clickable | boolean | 显示此“ 代码” 是否多边形</code> 处理鼠标事件. |
title | string | 标题 上下文简介. 一些覆盖,例如标记,会在地图上显示标题. 标题也是默认的可访问文本. 仅在iOS上可用. |
tag | string | |
圆形
对于网络,所有的javascript 圆形 选项可用
圆能延伸出google.maps. 圆可选.
对于iOS和Android,只声明配置选项 圆形 备有.
| Prop | 类型 | 说明 |
fillColor | string | 填充颜色. 支持所有 CSS3 颜色,但扩展命名颜色除外. |
fillOpacity | number | 填充不透明在0.0到1.0之间. |
strokeColor | string | 中风之色. 支持所有 CSS3 颜色,但扩展命名颜色除外. |
strokeWeight | number | 中风宽度以像素表示. |
geodesic | boolean | |
clickable | boolean | 显示此“ 代码” 是否圆形</code> 处理鼠标事件. |
title | string | 标题 上下文简介. 一些覆盖,例如标记,会在地图上显示标题. 标题也是默认的可访问文本. 仅在iOS上可用. |
tag | string | |
复线
对于网络,所有的javascript 复线 选项可用
Polyline扩展了google.maps. 复行可选.
对于iOS和Android,只声明配置选项 复线 备有.
| Prop | 类型 | 说明 |
strokeColor | string | 中风之色. 支持所有 CSS3 颜色,但扩展命名颜色除外. |
strokeOpacity | number | 中风不透明在0.0到1.0之间. |