我正在尝试与 Google 地图地点自动完成 API 进行 Angular 对话。问题是服务器不允许 CORS 调用(它不返回Access-Control-Allow-Origin
header)和 JSONP 调用似乎也是徒劳的,因为它返回纯 JSON 而不是 JSONP,从而导致语法错误。
这就是我目前正在服务功能中尝试的(_jsonp
is a Jsonp
目的):
return this._jsonp.request(url, { method: 'GET' });
但这是行不通的。响应到达,但 Angular 崩溃,因为它不是 JSONP 而是 JSON。
这太疯狂了。如果 CORS 被禁用并且 JSONP 调用不起作用,我到底如何访问它?
https://maps.googleapis.com/maps/api/place/autocomplete/json?key=ACCESS_KEY&types=(cities)&input=ber
有没有办法将 JSON 服务器响应转换为 Observable 管道中的 JSONP 数据对象?
从 Web 应用程序调用地点自动完成 API 的受支持方法是使用地点库 https://developers.google.com/maps/documentation/javascript/examples/places-autocomplete:
<script>
function initMap() {
var map = new google.maps.Map(document.getElementById('map'), {
center: {lat: -33.8688, lng: 151.2195},
zoom: 13
});
...
map.controls[google.maps.ControlPosition.TOP_RIGHT].push(card);
var autocomplete = new google.maps.places.Autocomplete(input);
autocomplete.bindTo('bounds', map);
var infowindow = new google.maps.InfoWindow();
var infowindowContent = document.getElementById('infowindow-content');
infowindow.setContent(infowindowContent);
var marker = new google.maps.Marker({
map: map,
anchorPoint: new google.maps.Point(0, -29)
});
</script>
<script
src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&libraries=places&callback=initMap"
async defer></script>
这样一来,响应缺乏内容并不重要Access-Control-Allow-Origin
标头。
以这种方式使用 Maps JavaScript API——通过script
元素来加载库,然后使用google.maps.Map
和别的google.maps.*
方法——是唯一受支持的方法。 Google 故意不允许通过使用 XHR 或 Fetch API 发送的请求来执行此操作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)