我正在开发一个应用程序,除其他外,它允许与通过附近搜索找到的企业联系、导航到它们、访问它们的网站......
一旦用户对单个企业执行任何操作,它就会被添加到最近列表中,允许用户再次执行该操作,或再次查看有关该企业的信息。
如果用户致电某个企业,下次访问最近列表时,它应该显示为列表项,以及姓名、电话号码等......
如果导航到它,情况也是如此。
我注意到术语中缓存有一个很大的限制,即只允许永久存储地点ID,而基本地理坐标(lat-lng)可以存储30天。
奇怪的是,它说可以只存储地点 ID 和坐标,但如果没有映射和上下文,我找不到这些有什么用。当然,如果您添加上下文,您实际上会存储更多信息。例如,如果您拨打了该地点并显示了名称,那么您已经知道这两个地点,因此两者都应该映射到地点 ID...
链接:
缓存。客户可以临时缓存 Places API 中的纬度 (lat) 和经度 (lng) 值,最多可连续 30 个日历日,之后客户必须删除缓存的纬度和经度值。客户可以缓存 Places API 地点 ID (place_id) 值
无缓存。除非地图服务特定条款明确允许,否则客户不得缓存 Google 地图内容。
使用 Places API 的应用程序受 Google Maps Platform 服务条款的约束。条款第 3.2.3(a) 和 (b) 节规定,除非条款中规定的有限条件,否则您不得预取、索引、存储或缓存任何内容。
请注意,用于唯一标识地点的地点 ID 不受缓存限制。因此,您可以无限期地存储地点 ID 值。地点 ID 在 Places API 响应的 place_id 字段中返回。
遗憾的是我无法找到有关此的更多信息。
有人告诉我,作为“合理使用”的一部分,缓存应该在 24 小时内有效,以避免重新查询已经获得的内容,类似于 Web 浏览器处理查询的方式。例如,如果用户希望查看他几秒钟前已经获得的信息,这会有所帮助。
我还被告知,如果它在用户自己的设备上是本地的,那么也应该没问题,因为它没有在外部发布,并且用户无论如何都可以手动保存信息。
对于每一个主张,我都找不到参考资料。
这在这里非常重要,因为应用程序“最近”列表上的项目与实际位置之间必须存在某种映射。例如,如果是电话呼叫,则它至少必须具有(地点的)地点 ID 和(呼叫的)电话号码。但它还应该显示该地点的名称,因为用户只是显示了此信息并希望在那里看到它,而不仅仅是电话号码。
奇怪的是,它说可以只存储地点 ID 和坐标,但是如果它们没有任何映射,那么这些有什么用呢?我到底能用这个做什么呢?
在这种情况下,缓存的合理使用是什么?
对于所有 API,缓存一般来说 24 小时都可以吗?
如果它非常相关,因为用户执行了与查询相关的操作(拨打了该地点的电话号码,因此应该可以在列表中以及其他地方看到此信息),我是否也可以将其存储在存储中?我的意思是存储我从 …
我想将此自定义小部件添加到我的标记中。我已经设计了小部件,但我不知道如何将其放置在标记上。
如何自定义它以始终显示在信息窗口位置。它包裹在一个定位的小部件中,但我无法将其放置在信息窗口位置。
Stack(
children: [
AnimatedPositioned(
bottom: 0.0,
duration: Duration(milliseconds: 200),
child: Container(
padding: EdgeInsets.only(top:
30,left: 15,
right: 15,bottom: 10),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.only(
topRight: Radius.circular(0),
topLeft: Radius.circular(0),
bottomRight: Radius.circular(5),
bottomLeft: Radius.circular(5))),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Text(
'500 USD',
style: TextStyle(
fontWeight: FontWeight.w600,
fontFamily: 'Roboto',
color: customBlue,
fontSize: _sizeConfig.textSize(
context,
Converters.configSize(14),
),
),
),
SizedBox(
height: 10,
),
RatingBar.builder(
initialRating: 3.5,
unratedColor: Colors.grey
.withOpacity(0.5),
minRating: 1,
allowHalfRating: true,
itemSize: 20,
direction: Axis.horizontal,
itemCount: 5,
itemPadding: EdgeInsets.symmetric(horizontal: …Run Code Online (Sandbox Code Playgroud) 我依靠 flutter 中的本机代码将 .kml 覆盖加载到我的 Google 地图(修改后的 GoogleMapController.java)。
.kml 覆盖存储在此处:android/app/src/main/res/raw/borders.kml。
我在 main.dart 中调用我的覆盖层,如下所示:
Future<void> addKml(GoogleMapController mapController) async {
const MethodChannel channel = MethodChannel('flutter.native/helper');
try {
int kmlResourceId = await channel.invokeMethod('KML');
return mapController.channel.invokeMethod("map#addKML", <String, dynamic>{
'resourceId': kmlResourceId,
});
} on PlatformException catch (e) {
throw 'Unable to plot map: ${e.message}';
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的 MainActivity.kt:
class MainActivity: FlutterActivity() {
private val CHANNEL = "flutter.native/helper"
private var mapId: Int? = null
override fun onCreate(savedInstanceState: Bundle?, PersistentState: PersistableBundle?) {
super.onCreate(savedInstanceState, PersistentState)
GeneratedPluginRegistrant.registerWith(FlutterEngine(this));
}
override …Run Code Online (Sandbox Code Playgroud) 我正在使用 Google 地图 API,我需要使用一些 TextFormField 在 google 地图上显示一些容器。我面临的问题是我需要滚动谷歌地图顶部的容器。也就是说,当用户将容器从下往上移动时,容器才会像这样来到顶部。
我的代码
Stack(children: <Widget>[
Container(
width: MediaQuery.of(context).size.width,
height: MediaQuery.of(context).size.height,
child: GoogleMap(
markers: Set<Marker>.of(_markers.values),
onMapCreated: _onMapCreated,
initialCameraPosition: CameraPosition(
target: currentPostion,
zoom: 18.0,
),
myLocationEnabled: true,
onCameraMove: (CameraPosition position) {
if (_markers.length > 0) {
MarkerId markerId = MarkerId(_markerIdVal());
Marker marker = _markers[markerId];
Marker updatedMarker = marker.copyWith(
positionParam: position.target,
);
setState(() {
_markers[markerId] = updatedMarker;
});
}
},
),
),
Align(
alignment: Alignment.bottomCenter,
child: Padding(
padding: const EdgeInsets.only(left: 8, right: 8),
child: Container(
color: Colors.white, …Run Code Online (Sandbox Code Playgroud) 我正在尝试在我的角度项目中动态设置谷歌地图键。
通常我们在 Angular 项目的 index.html 文件中设置该 API 密钥。现在我想动态更改该键。我将通过一些 API 获取该密钥,问题是如何在我的 index.html 中设置它。任何帮助将不胜感激。
索引.html
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Angular App</title>
<script type="text/javascript"
src="https://maps.googleapis.com/maps/api/js?key=GOOGLE_API_KEY&libraries=places,drawing&callback=initMap"></script>
<script src="https://apis.google.com/js/platform.js" async defer></script>
<link rel="icon" type="image/x-icon" href="web_images/title_image.png">
</head>
</html>
Run Code Online (Sandbox Code Playgroud) 我正在从 flutter 应用程序实现到导航应用程序(如 Google 地图或 Waze)的深层链接。我对 Google 地图或 Waze 这样做都没有问题,我的问题是,如果我为 Google 地图配置链接,用户仍然可以选择在 Waze 中打开它,但显然不会启动导航,因为参数不同。
有没有办法限制用户对要使用的应用程序的选择?或者是否可以根据用户选择打开的应用程序使用不同的链接?或者更好的是,是否有一个适用于这两个应用程序的通用导航链接?
我的应用程序工作得很好。但是当我添加一些互联网和地图的使用权限以及谷歌地图的 api 密钥时,它给了我错误。我尝试了 flutter clean、flutter run 但仍然遇到相同的错误。我不明白我在清单文件中做错了什么。请有人帮助我。
这是我的清单文件代码:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.food_order">
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<application
android:label="food_order"
android:icon="@mipmap/ic_launcher"
<activity
android:name=".MainActivity"
android:launchMode="singleTop"
android:theme="@style/LaunchTheme"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:hardwareAccelerated="true"
android:windowSoftInputMode="adjustResize">
<meta-data
android:name="io.flutter.embedding.android.NormalTheme"
android:resource="@style/NormalTheme"
/>
<meta-data
android:name="io.flutter.embedding.android.SplashScreenDrawable"
android:resource="@drawable/launch_background"
/>
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<meta-data android:name="com.google.android.geo.API_KEY"
android:value="AIzaSyCn************ratM"/>
<meta-data
android:name="flutterEmbedding"
android:value="2" />
</application>
</manifest>
Run Code Online (Sandbox Code Playgroud) 我试图从谷歌地图获取用户的当前位置,但我得到了一个异常作为回报,我似乎无法理解为什么会发生这种情况。该应用程序很简单 - 获取用户的当前位置,然后将相机缩放到该位置。就是这样。
我将附上我的代码和异常消息。奇怪的是,正如您在异常消息中看到的那样,我正确地获取了 LatLng,那么为什么相机没有指向该位置呢?
class Map extends StatefulWidget {
@override
_MapState createState() => _MapState();
}
class _MapState extends State<Map> {
LatLng currentLatLng;
Completer<GoogleMapController> _controller = Completer();
@override
void initState(){
super.initState();
Geolocator.getCurrentPosition().then((currLocation){
setState((){
currentLatLng = new LatLng(currLocation.latitude, currLocation.longitude);
});
});
}
@override
Widget build(BuildContext context) {
print("Current Location --------> " + currentLatLng.latitude.toString() + " " + currentLatLng.longitude.toString());
return MaterialApp(
home: new Scaffold(
body: GoogleMap(
mapType: MapType.normal,
initialCameraPosition: CameraPosition(target: currentLatLng),
onMapCreated: (GoogleMapController controller) {
_controller.complete(controller);
},
),
),
);
}
} …Run Code Online (Sandbox Code Playgroud) google-maps ×8
flutter ×6
dart ×5
android ×1
angular ×1
caching ×1
fluttermap ×1
java ×1
kotlin ×1
waze ×1