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
事件中?单击按钮获取您的位置。
试试吧,谢谢,但我不认为我在寻找类似的东西