8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

标记类的弃用 - Google Map API 警告

VSO 2月前

79 0

我正在使用 google map typescript api 开发一款应用程序,今天启动该应用程序时收到了此警告消息 -> 从 2024 年 2 月 21 日起,google.maps.Marker 将不再可用……

我正在使用 google map typescript api 开发一款应用程序,今天启动该应用程序时我收到了此警告消息 ->

自 2024 年 2 月 21 日起,google.maps.Marker 将不再可用。请改用 google.maps.marker.AdvancedMarkerElement。有关停用的更多信息,请访问 https://developers.google.com/maps/deprecations .

但 AdvancedMarkerElement 不具备 Marker 类的所有属性,这是为什么?我将 @types/google.maps 更新到最新版本,但仍然收到相同的警告。有人知道吗?如何解决?

帖子版权声明 1、本帖标题:标记类的弃用 - Google Map API 警告
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由VSO在本站《google-maps》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 您必须调整代码才能使用 AdvancedMarkerElement。属性可能不完全匹配,但我想有办法实现相同的功能。我们可以帮助您解决遇到的具体问题,但对于您的一般问题,答案是“按照消息提示操作”。

  • Abhi 2月前 0 只看Ta
    引用 3

    更广泛的相关问题与 AdvancedMarkerElement 的新 \'mapId\' 要求有关。现在每个平台上的每张地图都需要创建一个 mapId 并向 Google 注册。这可以实现计量并暗示收入来源(现在或将来)。旧标记是否可以移植到新标记并保持免费?否则,我可能会考虑切换到 OpenStreetMaps。

  • 此弃用警告与以下情况无关 @types/google.maps - 它是源自 您加载的 Google 地图库 .

    看,Google Maps 是 有版本的 。您可以 version 可选的加载参数 v optional loading parameter v 。如果您不传递版本,Google 将默认使用该 weekly 版本 - 这 可能是弃用警告的 .

    快速“修复”以摆脱此警告:降级到最近的 次要 版本,即 3.55 .

    长期解决方案:评估 是否 可以/应该迁移 Markers AdvancedMarkers 。请记住, Markers 它们已被弃用,但并未 停用 如果您需要复习这些概念, 请参阅我的 标记比较指南 或我的 标记自定义指南

    最后,正如@ceejayoz 在评论中所说的那样, AdvancedMarkers 本质上是的超集 Markers :它们扩展了其功能并提高了性能。

  • \'Hello World\' 比较:

    标记(遗留)

    google.maps.Marker 已弃用(2024 年 2 月 21 日(v3.56))。

    文档: https://developers.google.com/maps/documentation/javascript/markers

    // Initialize and add the map
    let map;
    
    function initMap() {
      const myLatLng = { lat: -25.363, lng: 131.044 };
      const map = new google.maps.Map(document.getElementById("map"), {
        zoom: 4,
        disableDefaultUI: true, // a way to quickly hide all controls
      });
    
      new google.maps.Marker({
        position: myLatLng,
        map,
      });
    }
    
    initMap();
    

    AdvancedMarkerElement(新)

    文档: https://developers.google.com/maps/documentation/javascript/advanced-markers/overview

    额外的步骤 AdvancedMarkerElement 创建地图ID .

    // Initialize and add the map
    let map;
    
    async function initMap_AdvancedMarkerElement() {
      const myLatLng = { lat: -25.363, lng: 131.044 };
      const { Map } = await google.maps.importLibrary("maps");
      const { AdvancedMarkerElement } = await google.maps.importLibrary("marker");
    
      // The map, centered at Uluru
      map = new Map(document.getElementById("AdvancedMarker_MAP"), {
        zoom: 4,
        center: myLatLng,
        disableDefaultUI: true, // a way to quickly hide all controls
        mapId: "DEMO_MAP_ID",
      });
    
      // The marker, positioned at Uluru
      const marker = new AdvancedMarkerElement({
        map: map,
        position: myLatLng,
        title: "Uluru",
      });
    }
    
    initMap_AdvancedMarkerElement();
    

    相关: 异步 JavaScript

    重要 - 许多代码想法(例如更改标记图标、标记样式等) - 彻底改变了 VS Legacy(遵循文档)。

    PRE 步骤(传统和高级):

    1. p6

    2. p7

    <script async
        src="https://maps.googleapis.com/maps/api/js?your-key=&loading=async&callback=initMap">
    </script>
    

    加载地图 JavaScript API 的更多方法: https://developers.google.com/maps/documentation/javascript/load-maps-js-api

    1. CSS:为地图 div 添加 高度 。例如: #map {height: 400px;}
  • 在这种情况下,使用高级地图标记与传统标记相比非常慢:

    生成 50000 个带有 70 个不同 Icon-URL 的标记

    遗产 Marker.setIcon IconURL

    内存使用量 500MB
    创建标记 700ms
    所有标记的滚动都非常流畅

    高级地图标记

    new_marker.content = document.createElement('img');
    new_marker.content.src = CalcIconUrl(markers.markerData[i]);
    

    内存使用量:3GB
    创建标记:15800ms
    滚动速度非常非常慢,无法让用户接受

  • 对于任何使用 Vue 的人来说,我遇到的最棘手的事情之一是谷歌地图不接受 reactive ref 地图对象,因此当您声明地图实例时使用 shallowRef 。这样,地图就会接受 AdvanceMarker 库,正如文档所说。

  • TypeScript 对此不满意 const { AdvancedMarkerElement} = await google.maps.importLibrary(\'marker\');

    属性“AdvancedMarkerElement”在类型“CoreLibrary | MapsLibrary | PlacesLibrary | GeocodingLibrary | RoutesLibrary | MarkerLibrary | ... 还有 5 ... | VisualizationLibrary”上不存在。ts(2339),此外 PinElement 也是未知的。

    我已尝试安装最新的类型定义。npm install @types/googlemaps@latest

    谷歌在使用 TypeScript 支持高级标记之前是否会贬值标记?

  • 还需要考虑的是,AdvancedMarker 不支持 StreetViewPanorama ( https://issuetracker.google.com/issues/282790637 )

    所以据我所知,如果您在 StreetViewPanorama 中使用标记,您将会受到警告。

返回
作者最近主题: