Javascript 未捕获类型错误:无法读取属性';应用';未定义的谷歌地图
我正在使用谷歌地图在地图上做标记,并尝试使用以下代码将地址转换为地理代码:Javascript 未捕获类型错误:无法读取属性';应用';未定义的谷歌地图,javascript,google-maps,Javascript,Google Maps,我正在使用谷歌地图在地图上做标记,并尝试使用以下代码将地址转换为地理代码: <script src="https://maps.googleapis.com/maps/api/js?key=&callback=initialize" async defer></script> <script type="text/javascript"> var map; function initialize() { var chamberLocatio
<script src="https://maps.googleapis.com/maps/api/js?key=&callback=initialize" async defer></script>
<script type="text/javascript">
var map;
function initialize() {
var chamberLocation = {lat: 43, lng: -82};
var geocoder = new google.maps.Geocoder();
map = new google.maps.Map(document.getElementById('map'), {
center: {lat: 42.9745, lng: -82.4066},
zoom: 14,
styles: [{"featureType":"road","elementType":"geometry","stylers":[{"visibility":"simplified"}]},{"featureType":"road.arterial","stylers":[{"hue":149},{"saturation":-78},{"lightness":0}]},{"featureType":"road.highway","stylers":[{"hue":-31},{"saturation":-40},{"lightness":2.8}]},{"featureType":"poi","elementType":"label","stylers":[{"visibility":"off"}]},{"featureType":"landscape","stylers":[{"hue":163},{"saturation":-26},{"lightness":-1.1}]},{"featureType":"transit","stylers":[{"visibility":"off"}]},{"featureType":"water","stylers":[{"hue":3},{"saturation":-24.24},{"lightness":-38.57}]}],
zoomControl: false,
scaleControl: false,
mapTypeControl: false,
disableDefaultUI: false,
streetViewControl: false,
rotateControl: false,
scrollwheel: false,
draggable: false
});
codeAddress(geocoder, map);
}
function codeAddress(geocoder, map) {
var address = 'place';
geocoder.geocode({ 'address' : address }), function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
var marker = new google.maps.Marker({
map: map,
position: results[0].geometry.location
});
} else {
console.log('This didnt work' + status);
}
};
}
</script>
var映射;
函数初始化(){
var chamberLocation={lat:43,lng:-82};
var geocoder=new google.maps.geocoder();
map=new google.maps.map(document.getElementById('map'){
中心:{lat:42.9745,lng:-82.4066},
缩放:14,
样式:[{“featureType”:“road”,“elementType”:“geometry”,“stylers”:[{“visibility”:“simplified”}],{“featureType”:“road.Arteral”,“stylers”:[{“hue”:149},{“saturation”:-78},{“lightness”:0},{“featureType”:“road.highway”,“stylers”:[{“hue”:-31},{“saturation”:-40},{“lightness”:2.8}],{“featureType”:“label”,“stylers”:“label”,“visibility”:“off”}、{“featureType”:“风景”、“风格”:[{“色调”:163}、{“饱和度”:-26}、{“明度”:-1.1}、{“特色类型”:“过渡”、“风格”:[{“可见性”:“off”}、{“特色类型”:“水”、“风格”:[{“色调”:3}、{“饱和度”:-24.24}、{“明度”:-38.57}],
动物控制:错误,
scaleControl:false,
mapTypeControl:false,
disableDefaultUI:false,
街景控制:错误,
旋转控制:错误,
滚轮:错误,
可拖动:错误
});
编码地址(地理编码器、地图);
}
功能代码地址(地理编码器、地图){
变量地址='地点';
geocoder.geocode({'address':address}),函数(结果,状态){
if(status==google.maps.GeocoderStatus.OK){
var marker=new google.maps.marker({
地图:地图,
位置:结果[0]。几何体。位置
});
}否则{
console.log('此未工作'+状态);
}
};
}
每当我这样做时,我都会收到一个错误,说uncaughttypeerror:无法读取未定义的属性“apply”
导致此错误的原因是什么?我不确定如何修复此问题。是否必须导入另一个google maps api?此错误是一个输入错误。我将代码放在下面,并在输入错误的位置注释了
//更改
。geocoder.geocode({},回调)
是一个接受对象和回调的函数,但是您有geocoder.geocode({'address':address})
,键入的是)
它应该是geocoder.geocode({'address':address}),函数(结果,状态){…
<div id="map" style="width: 320px; height: 480px;"></div>
<script type="text/javascript">
var map;
function initialize() {
// your code
// etc ...
codeAddress(geocoder, map);
}
function codeAddress(geocoder, map) {
var address = 'place';
geocoder.geocode({
'address': address
}, // change
function(results, status) {
if (status == 'OK') { // change
var marker = new google.maps.Marker({
map: map,
position: results[0].geometry.location
});
// some debug output
console.log("status is: " + status)
console.log("results is: " + JSON.stringify(results[0].geometry.location))
} else {
console.log('This didnt work' + status);
}
});
};
</script>
<script async defer src="https://maps.googleapis.com/maps/api/js?key=API_KEY&callback=initialize"></script>
var映射;
函数初始化(){
//你的代码
//等等。。。
编码地址(地理编码器、地图);
}
功能代码地址(地理编码器、地图){
变量地址='地点';
地理编码({
“地址”:地址
},//更改
功能(结果、状态){
如果(状态=='OK'){//change
var marker=new google.maps.marker({
地图:地图,
位置:结果[0]。几何体。位置
});
//一些调试输出
日志(“状态为:”+状态)
log(“结果为:+JSON.stringify(结果[0].geometry.location))
}否则{
console.log('此未工作'+状态);
}
});
};
如果我使用async/await
而不是callback怎么办?在这种情况下,如何编写回调函数?