gpt4 book ai didi

javascript - AngularJS 谷歌地图点击事件不会在 ios 设备 ipad 和 iphone 中触发

转载 作者:可可西里 更新时间:2023-11-01 05:25:07 26 4
gpt4 key购买 nike

我已将 google maps API 与我的应用程序集成以提供自动完成建议,它在我的笔记本电脑 (Ubuntu) 和所有浏览器上也能正常工作。但是,最近我用 iPad 和 iPhone 测试了它不起作用。我无法点击建议的地点。我正在使用 AngularJS,我的代码片段如下:

HTML

<div class="row">
<div class="col-md-6">
<form name="searchForm" ng-submit="fillInAddress()">
<div class="input-group well">
<input type="text" class="form-control" id="autocomplete" name="city" placeholder="Enter your city"
onFocus="geolocate()" required />
<span class="input-group-btn">
<button class="btn btn-primary" type="submit" ladda="ldloading.slide_left" data-style="slide-left" data-spinner-color="#000000"
ng-disabled="searchForm.$invalid">
<i class="fa fa-search"></i> Search
</button>
</span>
</div>
</form>
</div>
</div>

JS

 var placeSearch, autocomplete;

function initAutocomplete() {
autocomplete = new google.maps.places.Autocomplete((document.getElementById('autocomplete')),
{types: ['geocode']});
autocomplete.addListener('place_changed', fillInAddress);
}

function fillInAddress() {
// Get the place details from the autocomplete object.
var place = autocomplete.getPlace();
locationfilter.lat=place.geometry.location.lat();
locationfilter.lon=place.geometry.location.lng();
$scope.getOrders($scope.reportParams,locationfilter);
}

$scope.getOrders = function(pagination, locationfilter) {
$scope.working = true;
sliveorders
.getLocOrders(pagination, locationfilter)
.then(function(res) {
$scope.Orders=res.data;
$scope.totalItems=res.total;
$scope.working = false;
})
.catch(function(err) {
console.log('Location search err:', err);
$scope.working = false;
});
}

function geolocate() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position) {
var geolocation = {
lat: position.coords.latitude,
lng: position.coords.longitude
};
var circle = new google.maps.Circle({
center: geolocation,
radius: position.coords.accuracy
});
autocomplete.setBounds(circle.getBounds());
});
}
};
initAutocomplete();

最佳答案

这是一个使用 ng-map 的工作示例(在装有 IoS 9.2 的 iPad 上测试过) ,一个用于 Google map 的 AngularJS 库。

angular.module("app", ['ngMap']).controller("MyCtrl", function($scope, NgMap) {
var vm = this;
//vm.types = "['geocode']";
vm.types = "['establishment']";
vm.usebounds = false;

vm.placeChanged = function() {
vm.place = this.getPlace();
console.log('location', vm.place.geometry.location);
vm.map.setCenter(vm.place.geometry.location);
}

vm.geolocate = function() {
if (navigator.geolocation) {
console.log("geolocate");
navigator.geolocation.getCurrentPosition(function(position) {
var geolocation = {
lat: position.coords.latitude,
lng: position.coords.longitude
};
console.log("position", position);
if (vm.usebounds) {
vm.mybounds = {
center: geolocation,
radius: position.coords.accuracy
};
}
vm.map.setCenter(geolocation);
});
}
};

NgMap.getMap().then(function(map) {
vm.map = map;
});

});
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.5/angular.min.js"></script>
<script src="https://rawgit.com/allenhwkim/angularjs-google-maps/master/build/scripts/ng-map.js"></script>

<script src="https://maps.google.com/maps/api/js?libraries=places,visualization,drawing,geometry,places"></script>

<div ng-app="app">
<div ng-controller="MyCtrl as vm">
Enter your city: <br/>
<input places-auto-complete size=80
ng-model="vm.address"
component-restrictions="{country:'us'}"
types="{{types}}"
ng-focus="vm.geolocate()"
strict-bounds="true"
circle-bounds="{{vm.mybounds}}"
on-place-changed="vm.placeChanged()" /> <br/>
<input type="checkbox"
ng-model="vm.usebounds">use bounds
<br/>
<div ng-show="vm.place">
Address = {{vm.place.formatted_address}} <br/>
Location: {{vm.place.geometry.location}}<br/>
</div>
<hr>
bounds: {{vm.mybounds}}
</div>
<ng-map></ng-map>
</div>

这是一个 jsfiddle:https://jsfiddle.net/beaver71/mu5u71sg/

关于javascript - AngularJS 谷歌地图点击事件不会在 ios 设备 ipad 和 iphone 中触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48659034/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com