离子框架,一种“发布”或“发送”位置的方法?

时间:2016-09-06 22:37:31

标签: angularjs cordova google-maps ionic-framework maps

首先,如果这次我的英语让你感到困惑,我道歉。这个问题听起来有点奇怪,但是让我解释一下。

我有一份申请加油产品的联系表格;它适用于商业场所,例如餐馆。在这种形式下,客户选择他需要的产品以及交付地点。当客户填写所有字段时,这些字段通过邮件发送到外部服务器,外部服务器存储数据并在发送电子邮件后发送给管理员。这很好。但是我有一个新的要求,在表单中添加一个新字段,该字段将被命名为" Location",在此字段中,客户可以使用Google添加将要交付产品的特定地点的位置地图或Apple地图。

所以,我有两个问题:

1)获取该数据的最佳方式是什么,并以一种舒适,清晰的方式提供给用户。我可以使用一些插件吗?该要求指定它必须是"像whatsapp功能共享位置",但我不知道是否可以使用Ionic完成这样的事情,以及它是否适用于android和ios,或者即使这两个案例中的任何一个都没有安装相应的地图应用程序。

2)并且,假设我已经拥有该位置,那么在帖子中发送此类信息并向管理员发送邮件的最佳方式是什么?你推荐什么?

感谢。

1 个答案:

答案 0 :(得分:0)

这是我前一段时间写的指令。请注意,它取决于angular-google-maps可用包here

api也可能已经改变,所以这应该只被视为指导!



angular.module('app.directives', [
    'uiGmapgoogle-maps'
  ])
  .directive('googlePlaces', function(uiGmapGoogleMapApi) {
    return {
      restrict: 'AE',
      replace: true,
      scope: {
        address: '=',
        coords: '='
      },
      template: '<input id="google_places_ac" name="google_places_ac" type="text" class="input-block-level"/>',
      link: function(scope, elm, attrs) {
        var listener;
        uiGmapGoogleMapApi.then(function(maps) {
          var autocomplete = new maps.places.Autocomplete(elm[0], {});

          listener = maps.event.addListener(autocomplete, 'place_changed', function() {
            var place = autocomplete.getPlace();

            if (place.geometry && scope.coords) {
              scope.coords.latitude = place.geometry.location.lat();
              scope.coords.longitude = place.geometry.location.lng();
            }

            scope.address = place.formatted_address;

            scope.$apply();
          });
        });

        scope.$on('$destroy', function() {
          uiGmapGoogleMapApi.then(function(maps) {
            if (listener)
              maps.event.removeListener(listener);
          });
        });
      }
    }
  });
&#13;
<!-- Usage -->
<google-places address="vm.address" [coords="vm.coords"]/>
&#13;
&#13;
&#13;

至于保存数据:地址字符串更好地解析但坐标更精确。如果您要保存位置,请致电