小编Nel*_*Jr.的帖子

对于 Google Places API,缓存的“合理使用”情况是什么?

背景

我正在开发一个应用程序,除其他外,它允许与通过附近搜索找到的企业联系、导航到它们、访问它们的网站......

一旦用户对单个企业执行任何操作,它就会被添加到最近列表中,允许用户再次执行该操作,或再次查看有关该企业的信息。

如果用户致电某个企业,下次访问最近列表时,它应该显示为列表项,以及姓名、电话号码等......

如果导航到它,情况也是如此。

问题

我注意到术语中缓存有一个很大的限制,即只允许永久存储地点ID,而基本地理坐标(lat-lng)可以存储30天。

奇怪的是,它说可以只存储地点 ID 和坐标,但如果没有映射和上下文,我找不到这些有什么用。当然,如果您添加上下文,您实际上会存储更多信息。例如,如果您拨打了该地点并显示了名称,那么您已经知道这两个地点,因此两者都应该映射到地点 ID...

链接:

  1. https://cloud.google.com/maps-platform/terms/maps-service-terms#5.-places-api

缓存。客户可以临时缓存 Places API 中的纬度 (lat) 和经度 (lng) 值,最多可连续 30 个日历日,之后客户必须删除缓存的纬度和经度值。客户可以缓存 Places API 地点 ID (place_id) 值

  1. https://cloud.google.com/maps-platform/terms/#3.-license

无缓存。除非地图服务特定条款明确允许,否则客户不得缓存 Google 地图内容。

  1. https://developers.google.com/places/web-service/policies#pre-fetching,-caching,-or-storage-of-content

使用 Places API 的应用程序受 Google Maps Platform 服务条款的约束。条款第 3.2.3(a) 和 (b) 节规定,除非条款中规定的有限条件,否则您不得预取、索引、存储或缓存任何内容。

请注意,用于唯一标识地点的地点 ID 不受缓存限制。因此,您可以无限期地存储地点 ID 值。地点 ID 在 Places API 响应的 place_id 字段中返回。

我发现了什么

遗憾的是我无法找到有关此的更多信息。

有人告诉我,作为“合理使用”的一部分,缓存应该在 24 小时内有效,以避免重新查询已经获得的内容,类似于 Web 浏览器处理查询的方式。例如,如果用户希望查看他几秒钟前已经获得的信息,这会有所帮助。

我还被告知,如果它在用户自己的设备上是本地的,那么也应该没问题,因为它没有在外部发布,并且用户无论如何都可以手动保存信息。

对于每一个主张,我都找不到参考资料。

这在这里非常重要,因为应用程序“最近”列表上的项目与实际位置之间必须存在某种映射。例如,如果是电话呼叫,则它至少必须具有(地点的)地点 ID 和(呼叫的)电话号码。但它还应该显示该地点的名称,因为用户只是显示了此信息并希望在那里看到它,而不仅仅是电话号码。

问题

  1. 奇怪的是,它说可以只存储地点 ID 和坐标,但是如果它们没有任何映射,那么这些有什么用呢?我到底能用这个做什么呢?

  2. 在这种情况下,缓存的合理使用是什么?

  3. 对于所有 API,缓存一般来说 24 小时都可以吗?

  4. 如果它非常相关,因为用户执行了与查询相关的操作(拨打了该地点的电话号码,因此应该可以在列表中以及其他地方看到此信息),我是否也可以将其存储在存储中?我的意思是存储我从 …

android caching google-maps google-places-api

13
推荐指数
0
解决办法
1361
查看次数

如何添加自定义信息窗口颤动

我想将此自定义小部件添加到我的标记中。我已经设计了小部件,但我不知道如何将其放置在标记上。

如何自定义它以始终显示在信息窗口位置。它包裹在一个定位的小部件中,但我无法将其放置在信息窗口位置。

标记图像

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)

google-maps dart flutter

8
推荐指数
1
解决办法
2万
查看次数

Flutter:如何通过方法通道传递选定的文件?或者在 flutter 中指定一个路径并让它通过 kotlin/java 工作?

我依靠 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)

java google-maps dart kotlin flutter

5
推荐指数
0
解决办法
434
查看次数

Flutter 将容器从下到上移动

我正在使用 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)

google-maps dart flutter

5
推荐指数
1
解决办法
1448
查看次数

如何在 Angular 2 中动态设置 index.html 中的 Google 地图键?

我正在尝试在我的角度项目中动态设置谷歌地图键。

通常我们在 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)

google-maps angular

4
推荐指数
1
解决办法
2808
查看次数

Flutter Deeplink 到 Google 地图和 Waze

我正在从 flutter 应用程序实现到导航应用程序(如 Google 地图或 Waze)的深层链接。我对 Google 地图或 Waze 这样做都没有问题,我的问题是,如果我为 Google 地图配置链接,用户仍然可以选择在 Waze 中打开它,但显然不会启动导航,因为参数不同。

有没有办法限制用户对要使用的应用程序的选择?或者是否可以根据用户选择打开的应用程序使用不同的链接?或者更好的是,是否有一个适用于这两个应用程序的通用导航链接?

google-maps flutter waze

3
推荐指数
1
解决办法
6601
查看次数

解析 LocalFile 时出错:'E:\android\app\src\main\AndroidManifest.xml' 请确保 android 清单是有效的 XML 文档,然后重试

我的应用程序工作得很好。但是当我添加一些互联网和地图的使用权限以及谷歌地图的 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)

google-maps android-manifest dart flutter fluttermap

3
推荐指数
1
解决办法
2万
查看次数

谷歌地图当前用户位置 - Flutter

我试图从谷歌地图获取用户的当前位置,但我得到了一个异常作为回报,我似乎无法理解为什么会发生这种情况。该应用程序很简单 - 获取用户的当前位置,然后将相机缩放到该位置。就是这样。

我将附上我的代码和异常消息。奇怪的是,正如您在异常消息中看到的那样,我正确地获取了 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 dart flutter

3
推荐指数
1
解决办法
9861
查看次数