【问题标题】:Draggable, on Google AppMaker可拖动,在 Google AppMaker 上
【发布时间】:2018-03-30 02:53:16
【问题描述】:

我需要一点指导,因为我还没有找到我需要的解释。

我正在 Google App Maker 上开发一个网站,我想在 Google Map Widget 上使用 Draggable Marker。

我找到的所有信息都类似于外部网站,包括 HTML 和 JavaScript 库。输入时显示错误:

var marker = new google.maps.Marker({
  position: latlon,
  map: map,
  draggable: true,
  title:"Drag me!"
});

"Uncaught TypeError: google.maps.Marker 不是构造函数 在 var marker = new google.maps.Marker ({ (NewScript1: 143) ".

我尝试过客户端脚本和服务器端脚本。

问题,如果我想使用标记,我需要向 appmaker 添加库吗?

【问题讨论】:

    标签: marker google-app-maker


    【解决方案1】:

    您收到错误的原因很可能是您在加载 Maps API 之前执行了客户端脚本。要 100% 确定它已加载,您需要在 Google Map Widget 的 onAttach 事件中执行您的代码(也许 onDataLoad 也可以)。

    如果您想让应用制作工具默认添加到地图的Marker 可拖动,您可以使用这个 sn-p:

    // Google Map widget's onAttach event handler
    var marker = widget.getAddressMarkerJs();
    marker.setDraggable(true);
    

    如果你想添加全新的标记,你可以使用这个 sn-p:

    // Google Map widget's onAttach event handler
    var map = widget.getMapJs();
    
    var marker = new google.maps.Marker({
      position: { lat: 0, lng: 0 },
      map: map,
      draggable: true,
      title:"Drag me!"
    });
    

    奖励 sn-p 从地图中删除默认标记

    // Google Map widget's onAttach event handler
    var marker = widget.getAddressMarkerJs();
    marker.setMap(null);
    

    【讨论】:

    • 非常感谢 Pavel Shleinik,这很有效: //Google Map 小部件的 onAttach 事件处理程序 var marker = widget.getAddressMarkerJs(); marker.setDraggable(true);
    【解决方案2】:

    如果您想使用 Google Maps,您需要将其视为 App Maker API 中的一个小部件,这与您正在使用的 Google Maps API 略有不同。

    如果您查看 App Maker API,您将了解如何将标记添加到地图小部件以及如何返回它们:https://developers.google.com/appmaker/scripting/api/widgets#GoogleMap

    【讨论】:

    • 首先,Johan W. 非常感谢您的热情回复。我知道,我可以使用标记,并且可以获取纬度、经度、更改地址。我需要的是“可拖动的标记”,因此生成不同的纬度和经度,这就是我需要标记可拖动的原因。这就是我在使用小部件时遇到的问题,我找不到该信息。
    • 标记在 App Maker API 中不可拖动,因为 GoogleMap 小部件仅提供 Google Maps API 的一小部分(showMarkers、showAdress 等)。如果要使标记可拖动,则需要在 Property Editor 中的 apiKey 字段中添加一个键。最简单的方法是单击字段的问号,然后从那里转到 Google Maps API 网站。在那里您可以获得一个标准密钥,您可以在您的应用程序中使用该密钥通过 getMapJs() 方法访问 Maps 对象。
    • 你应该可以使用你介绍的脚本,如果你把它改成getMapJs()方法:var maps = widget.getMapJs(); var marker = new maps.Marker({ position: latlon, map: map, draggable: true, title:"Drag me!" });
    猜你喜欢
    • 1970-01-01
    • 2013-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多