Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 谷歌地图自动完成材料设计_Javascript_Css_Google Maps_Google Maps Api 3_Material Design - Fatal编程技术网

Javascript 谷歌地图自动完成材料设计

Javascript 谷歌地图自动完成材料设计,javascript,css,google-maps,google-maps-api-3,material-design,Javascript,Css,Google Maps,Google Maps Api 3,Material Design,我有一个关于在材料设计中实现Google Maps自动完成功能的问题: <md-autocomplete flex="" md-no-cache="ctrl.noCache" md-selected-item="ctrl.selectedItem" md-search-text="ctrl.searchText" md-items="item in ctrl.querySearch(ctrl.searchText)" md-item-text="item.display" md-float

我有一个关于在材料设计中实现Google Maps自动完成功能的问题:

<md-autocomplete flex="" md-no-cache="ctrl.noCache" md-selected-item="ctrl.selectedItem" md-search-text="ctrl.searchText" md-items="item in ctrl.querySearch(ctrl.searchText)" md-item-text="item.display" md-floating-label="Favorite state">
    <span md-highlight-text="ctrl.searchText">{{item.display}}</span>
</md-autocomplete>

是的,我想你知道些什么。google自动完成在文档和绑定到它们的事件处理程序的顶部(或底部?对不起,我记不起来了)有自己的DOMDrendered

简单的解决方法是覆盖css规则以满足您的需求。但如果这还不能解决问题,你可以使用谷歌地理编码API


使用材料设计md自动完成指令。您可以灵活地处理restful API中json格式的地理数据,并对其执行任何操作。但代价是您失去了一些功能(例如,您无法根据当前位置对匹配进行排序,您必须使用区域或城市手动限制它们)。

我们对我们的应用程序有完全相同的要求,我们确实做到了“正确”的方式,所以这里有一个使用md autocomplete指令(使用)的解决方案,它利用了来自谷歌的

视图:

只需记住在控制器激活时创建服务:

vm.gmapsService = new google.maps.places.AutocompleteService();
要在主应用程序文件上添加javascript依赖项:

<script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KE‌​Y&libraries=places"></script>

所有的虚拟机。东西是因为我们使用


希望它对你有用

如果您想集成它们以获得复选框和/或单选按钮等元素,这里有一个很好的参考:vm.search=search;你的帖子里少了一行。将需要一个新手花大量的时间来解决这个问题。感谢您提供的解决方案。如果有人正在努力工作,但不知道虚拟机-您必须将您的控制器指定为虚拟机。。。e、 g autoCompleteController作为VMG的巨大贡献!请注意,现在google places还需要API密钥
@LeoLozes在Angular 4中激活控制器时创建服务意味着什么?我不熟悉AngularJS的术语。什么是控制器?你能帮忙吗?
vm.search = search;

function search(address) {
  var deferred = $q.defer();
  getResults(address).then(
    function (predictions) {
      var results = [];
      for (var i = 0, prediction; prediction = predictions[i]; i++) {
        results.push(prediction.description);
      }
      deferred.resolve(results);
    }
  );
 return deferred.promise;
}   

function getResults(address) {
  var deferred = $q.defer();
  vm.gmapsService.getQueryPredictions({input: address}, function (data) {
    deferred.resolve(data);
  });
  return deferred.promise;
}
vm.gmapsService = new google.maps.places.AutocompleteService();
<script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KE‌​Y&libraries=places"></script>