特别是我正在向距离矩阵google api做一个get请求,但是得到了No No' Access-Control-Allow-Origin'。
this.http.get(googleApiurl).map(response => response.json()).subscribe(
//Code here
);
由于此标头是响应标头而非请求标头,因此我尝试了:
In constructor->private res: ResponseOptions
this.res.headers.append('Access-Control-Allow-Origin','*');
你能帮我吗?
答案 0 :(得分:0)
我建议您从服务器请求Google API。但是,如果您不想设置服务器,则有一些解决方法。
解决方案1:
我遇到了同样的问题,并通过使用PlacesService来获取PlaceID
来修复它// Get Place ID from Address
function getPlaceIDFromAddress(address, callback){
var place = {};
var request = {
location: new google.maps.LatLng(myLat, myLng),
radius: '50',
query: address
};
var service = new google.maps.places.PlacesService($scope.mapContainer);
service.textSearch(request, function(results, status){
if (status == google.maps.places.PlacesServiceStatus.OK) {
var placeId = results[0].place_id;
var location = results[0].geometry.location;
return callback(null, placeId);
}
});
}
然后将PlaceID传递给地理编码器以获取LatLng,或者您可以将LatLng传递给GeoCode以获取地址。
(new google.maps.Geocoder()).geocode({placeId: places_id}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
console.log("Address: ", results[0].formatted_address);
}});
解决方案2:
不推荐。
如果您只想在本地主机上进行测试,可以安装this chrome扩展程序。只需在调用matrix api
之前打开它此扩展程序将在标题中插入“Access-Control-Allow-Origin”。