Javascript 谷歌地图API-如何发送CORS位置照片请求

Javascript 谷歌地图API-如何发送CORS位置照片请求,javascript,google-maps,google-maps-api-3,cors,Javascript,Google Maps,Google Maps Api 3,Cors,我使用以下代码从自动完成对象的places\u changed事件中获取照片引用 var autocomplete = new google.maps.places.Autocomplete(input); google.maps.event.addListener(autocomplete, 'place_changed', function() { var place = autocomplete.getPlace(); var ref = place.ref

我使用以下代码从自动完成对象的
places\u changed
事件中获取照片引用

var autocomplete = new google.maps.places.Autocomplete(input);
google.maps.event.addListener(autocomplete, 'place_changed', function() {
    var place = autocomplete.getPlace();        
    var ref = place.reference;
    var url = "https://maps.googleapis.com/maps/api/place/photo?maxwidth=400&photoreference="+ref;
});
那么我如何向
url
发出HTTP请求呢。使用
$.getJSON()
会导致CORS问题。是否有其他方法可以解决此问题?

单击按钮获取您的位置

        <p id="demo">Click the button to get your position.</p>

        <button onclick="getLocation()">Try It</button>

        <div id="mapholder"></div>
        <script>
        var x = document.getElementById("demo");

        function getLocation() {
            if (navigator.geolocation) {
                navigator.geolocation.getCurrentPosition(showPosition, showError);
            } else {
                x.innerHTML = "Geolocation is not supported by this browser.";
            }
        }

        function showPosition(position) {
            var latlon = position.coords.latitude + "," + position.coords.longitude;

            var img_url = "http://maps.googleapis.com/maps/api/staticmap?center="
            +latlon+"&zoom=14&size=400x300&sensor=false";
            document.getElementById("mapholder").innerHTML = "<img src='"+img_url+"'>";
        }

        function showError(error) {
            switch(error.code) {
                case error.PERMISSION_DENIED:
                    x.innerHTML = "User denied the request for Geolocation."
                    break;
                case error.POSITION_UNAVAILABLE:
                    x.innerHTML = "Location information is unavailable."
                    break;
                case error.TIMEOUT:
                    x.innerHTML = "The request to get user location timed out."
                    break;
                case error.UNKNOWN_ERROR:
                    x.innerHTML = "An unknown error occurred."
                    break;
            }
        }
        </script>
试试看 var x=document.getElementById(“演示”); 函数getLocation(){ if(导航器.地理位置){ navigator.geolocation.getCurrentPosition(showPosition,showError); }否则{ x、 innerHTML=“此浏览器不支持地理位置。”; } } 功能显示位置(位置){ var latlon=位置.coords.latitude+“,”+位置.coords.latitude; var img_url=”http://maps.googleapis.com/maps/api/staticmap?center=" +latlon+“&zoom=14&size=400x300&sensor=false”; document.getElementById(“地图持有者”).innerHTML=“”; } 功能错误(错误){ 开关(错误代码){ 案例错误。权限被拒绝: x、 innerHTML=“用户拒绝了地理位置请求。” 打破 案例错误。位置不可用: x、 innerHTML=“位置信息不可用。” 打破 大小写错误。超时: x、 innerHTML=“获取用户位置的请求超时。” 打破 案例错误。未知错误: x、 innerHTML=“发生未知错误。” 打破 } }

尝试此代码…

创建一个
url
并将其放置在您想要的位置

与配额问题相关:您正在通过webservice()加载照片,这里需要一个密钥

当您使用maps Javascript API的places库时,通过
getUrl()
检索照片的URL,您将能够在不使用键的情况下加载照片:

函数init(){
var image=new image(),
input=document.getElementsByTagName('input')[0];
var autocomplete=new google.maps.places.autocomplete(输入);
google.maps.event.addListener(自动完成,'place\u changed',函数(){
var place=autocomplete.getPlace();
if(place.photos&&place.photos.length){
input.style.background='#fff';
image.src=place.photos[0].getUrl({
最大宽度:200,
最大高度:150
});
document.body.appendChild(图像);
}否则{
input.style.background='tomato';
if(image.parentNode){
image.parentNode.removeChild(图像)
}
}
});
}
google.maps.event.addDomListener(窗口'load',init)
html,
身体{
保证金:0;
填充:0;
文本对齐:居中;
}



您想对响应做什么(假设它可以工作,响应将是一个图像)是的,我期待一个图像作为响应。然后,我会将该图像插入到我的页面,这样我就可以将文本地址及其对应的图像并排创建一个
-属性到
url
并将其放置在你想要的位置哦,天哪,我真傻。我不知道为什么我没有想到这一点。但我现在遇到了另一个问题——返回的图像是达到配额后出现的图像。我敢肯定,在过去的30分钟里,我不可能提出超过8-10个请求。配额限制有那么低吗?我在哪里调用这些函数
getLocation()
showPosition()
?在
places\u changed
事件中?

单击按钮获取您的位置。

试试吧,谢谢,但我不认为我在寻找类似的东西