Javascript Google map api,未捕获错误,marker.setMap不是函数
我正在使用MeteorJS1.4.4.2+ReactJS构建交通堵塞应用程序。我以前使用过atmosphere google map软件包和流行的google map npm软件包(istarkov和tomchentw),这些软件包工作得很好,但它没有我想要的,所以我直接使用google map api来获得它的完整功能 我希望能够删除地图上选定的标记 尝试:Javascript Google map api,未捕获错误,marker.setMap不是函数,javascript,google-maps-api-3,Javascript,Google Maps Api 3,我正在使用MeteorJS1.4.4.2+ReactJS构建交通堵塞应用程序。我以前使用过atmosphere google map软件包和流行的google map npm软件包(istarkov和tomchentw),这些软件包工作得很好,但它没有我想要的,所以我直接使用google map api来获得它的完整功能 我希望能够删除地图上选定的标记 尝试: // Map functions in the same file as mapInit function let addMarker
// Map functions in the same file as mapInit function
let addMarker = ( location )=> {
let marker = new google.maps.Marker({
position: location,
map: map,
animation: google.maps.Animation.DROP,
draggable: true
}).addListener( 'click', ( e )=> removeMarkerOnClick( e ) );
markers.push( marker );
};
let removeMarkerOnClick( marker )=> {
let lat = marker.latLng.lat (),
lng = marker.latLng.ln (),
position = {};
markers = markers.reduce(( new_markers, marker )=> {
position = marker.f.position;
position.lat() !== lat && position.lng() !== lng ?
new_markers.push( marker ) : marker.setMap( null );
return new_markers;
}, markers);
}
window.initMap = () => {
//.... body hidden
map.addListener( 'click', ( e )=> addMarker( e.latLng ) );
}
Uncaught TypeError:
MapFunctions.jsx:74
marker.setMap is not a function
at http://localhost:3000/app/app.js?hash=1f01aac45aac6af0dd009bc4623183b2511f62bf:419:20
at Array.reduce (native)
at removeMarkerOnClick (http://localhost:3000/app/app.js?hash=1f01aac45aac6af0dd009bc4623183b2511f62bf:413:23)
at _.Ge.<anonymous> (http://localhost:3000/app/app.js?hash=1f01aac45aac6af0dd009bc4623183b2511f62bf:403:16)
at Object._.z.trigger (https://maps.googleapis.com/maps/api/js?key=AIzaSyB1-fwP96l-_VAicaDGRNMmEU93TY4fcGs&libraries=places&callback=initMap:102:121)
at XT.<anonymous> (https://maps.googleapis.com/maps-api-v3/api/js/28/14/marker.js:19:348)
at _.pG._.z.trigger (https://maps.googleapis.com/maps/api/js?key=AIzaSyB1-fwP96l-_VAicaDGRNMmEU93TY4fcGs&libraries=places&callback=initMap:102:121)
at _.pG.onclick (https://maps.googleapis.com/maps/api/js?key=AIzaSyB1-fwP96l-_VAicaDGRNMmEU93TY4fcGs&libraries=places&callback=initMap:40:81)
at _.Bu._.z.trigger (https://maps.googleapis.com/maps/api/js?key=AIzaSyB1-fwP96l-_VAicaDGRNMmEU93TY4fcGs&libraries=places&callback=initMap:102:121)
at _.Bu.<anonymous> (https://maps.googleapis.com/maps/api/js?key=AIzaSyB1-fwP96l-_VAicaDGRNMmEU93TY4fcGs&libraries=places&callback=initMap:40:81)
let removeMarkerOnClick( marker )=> {
let lat = marker.latLng.lat (),
lng = marker.latLng.ln (),
position = {};
markers = markers.reduce(( new_markers, marker )=> {
position = marker.f.position;
position.lat() !== lat && position.lng() !== lng ?
new_markers.push( marker ) : marker.f.setMap ( null ); // Change this line from marker.setMap( null ) to marker.f.setMap ( null )
return new_markers;
}, markers);
}
来自客户端控制台的错误:
// Map functions in the same file as mapInit function
let addMarker = ( location )=> {
let marker = new google.maps.Marker({
position: location,
map: map,
animation: google.maps.Animation.DROP,
draggable: true
}).addListener( 'click', ( e )=> removeMarkerOnClick( e ) );
markers.push( marker );
};
let removeMarkerOnClick( marker )=> {
let lat = marker.latLng.lat (),
lng = marker.latLng.ln (),
position = {};
markers = markers.reduce(( new_markers, marker )=> {
position = marker.f.position;
position.lat() !== lat && position.lng() !== lng ?
new_markers.push( marker ) : marker.setMap( null );
return new_markers;
}, markers);
}
window.initMap = () => {
//.... body hidden
map.addListener( 'click', ( e )=> addMarker( e.latLng ) );
}
Uncaught TypeError:
MapFunctions.jsx:74
marker.setMap is not a function
at http://localhost:3000/app/app.js?hash=1f01aac45aac6af0dd009bc4623183b2511f62bf:419:20
at Array.reduce (native)
at removeMarkerOnClick (http://localhost:3000/app/app.js?hash=1f01aac45aac6af0dd009bc4623183b2511f62bf:413:23)
at _.Ge.<anonymous> (http://localhost:3000/app/app.js?hash=1f01aac45aac6af0dd009bc4623183b2511f62bf:403:16)
at Object._.z.trigger (https://maps.googleapis.com/maps/api/js?key=AIzaSyB1-fwP96l-_VAicaDGRNMmEU93TY4fcGs&libraries=places&callback=initMap:102:121)
at XT.<anonymous> (https://maps.googleapis.com/maps-api-v3/api/js/28/14/marker.js:19:348)
at _.pG._.z.trigger (https://maps.googleapis.com/maps/api/js?key=AIzaSyB1-fwP96l-_VAicaDGRNMmEU93TY4fcGs&libraries=places&callback=initMap:102:121)
at _.pG.onclick (https://maps.googleapis.com/maps/api/js?key=AIzaSyB1-fwP96l-_VAicaDGRNMmEU93TY4fcGs&libraries=places&callback=initMap:40:81)
at _.Bu._.z.trigger (https://maps.googleapis.com/maps/api/js?key=AIzaSyB1-fwP96l-_VAicaDGRNMmEU93TY4fcGs&libraries=places&callback=initMap:102:121)
at _.Bu.<anonymous> (https://maps.googleapis.com/maps/api/js?key=AIzaSyB1-fwP96l-_VAicaDGRNMmEU93TY4fcGs&libraries=places&callback=initMap:40:81)
let removeMarkerOnClick( marker )=> {
let lat = marker.latLng.lat (),
lng = marker.latLng.ln (),
position = {};
markers = markers.reduce(( new_markers, marker )=> {
position = marker.f.position;
position.lat() !== lat && position.lng() !== lng ?
new_markers.push( marker ) : marker.f.setMap ( null ); // Change this line from marker.setMap( null ) to marker.f.setMap ( null )
return new_markers;
}, markers);
}
未捕获类型错误:
jsx:74
marker.setMap不是一个函数
在http://localhost:3000/app/app.js?hash=1f01aac45aac6af0dd009bc4623183b2511f62bf:419:20
at Array.reduce(本机)
在移除标记时,单击(http://localhost:3000/app/app.js?hash=1f01aac45aac6af0dd009bc4623183b2511f62bf:413:23)
在uge。(http://localhost:3000/app/app.js?hash=1f01aac45aac6af0dd009bc4623183b2511f62bf:403:16)
在对象处触发(https://maps.googleapis.com/maps/api/js?key=AIzaSyB1-fwP96l-_VAicaDGRNMmEU93TY4fcGs&libraries=places&callback=initMap:102:121)
在XT。(https://maps.googleapis.com/maps-api-v3/api/js/28/14/marker.js:19:348)
在uu.pG.uz.触发(https://maps.googleapis.com/maps/api/js?key=AIzaSyB1-fwP96l-_VAicaDGRNMmEU93TY4fcGs&libraries=places&callback=initMap:102:121)
在uu.pG.onclick(https://maps.googleapis.com/maps/api/js?key=AIzaSyB1-fwP96l-_VAicaDGRNMmEU93TY4fcGs&libraries=places&callback=initMap:40:81)
在uu.Bu.uz.触发(https://maps.googleapis.com/maps/api/js?key=AIzaSyB1-fwP96l-_VAicaDGRNMmEU93TY4fcGs&libraries=places&callback=initMap:102:121)
在u.Bu。(https://maps.googleapis.com/maps/api/js?key=AIzaSyB1-fwP96l-_VAicaDGRNMmEU93TY4fcGs&libraries=places&callback=initMap:40:81)
解决方案尝试:
// Map functions in the same file as mapInit function
let addMarker = ( location )=> {
let marker = new google.maps.Marker({
position: location,
map: map,
animation: google.maps.Animation.DROP,
draggable: true
}).addListener( 'click', ( e )=> removeMarkerOnClick( e ) );
markers.push( marker );
};
let removeMarkerOnClick( marker )=> {
let lat = marker.latLng.lat (),
lng = marker.latLng.ln (),
position = {};
markers = markers.reduce(( new_markers, marker )=> {
position = marker.f.position;
position.lat() !== lat && position.lng() !== lng ?
new_markers.push( marker ) : marker.setMap( null );
return new_markers;
}, markers);
}
window.initMap = () => {
//.... body hidden
map.addListener( 'click', ( e )=> addMarker( e.latLng ) );
}
Uncaught TypeError:
MapFunctions.jsx:74
marker.setMap is not a function
at http://localhost:3000/app/app.js?hash=1f01aac45aac6af0dd009bc4623183b2511f62bf:419:20
at Array.reduce (native)
at removeMarkerOnClick (http://localhost:3000/app/app.js?hash=1f01aac45aac6af0dd009bc4623183b2511f62bf:413:23)
at _.Ge.<anonymous> (http://localhost:3000/app/app.js?hash=1f01aac45aac6af0dd009bc4623183b2511f62bf:403:16)
at Object._.z.trigger (https://maps.googleapis.com/maps/api/js?key=AIzaSyB1-fwP96l-_VAicaDGRNMmEU93TY4fcGs&libraries=places&callback=initMap:102:121)
at XT.<anonymous> (https://maps.googleapis.com/maps-api-v3/api/js/28/14/marker.js:19:348)
at _.pG._.z.trigger (https://maps.googleapis.com/maps/api/js?key=AIzaSyB1-fwP96l-_VAicaDGRNMmEU93TY4fcGs&libraries=places&callback=initMap:102:121)
at _.pG.onclick (https://maps.googleapis.com/maps/api/js?key=AIzaSyB1-fwP96l-_VAicaDGRNMmEU93TY4fcGs&libraries=places&callback=initMap:40:81)
at _.Bu._.z.trigger (https://maps.googleapis.com/maps/api/js?key=AIzaSyB1-fwP96l-_VAicaDGRNMmEU93TY4fcGs&libraries=places&callback=initMap:102:121)
at _.Bu.<anonymous> (https://maps.googleapis.com/maps/api/js?key=AIzaSyB1-fwP96l-_VAicaDGRNMmEU93TY4fcGs&libraries=places&callback=initMap:40:81)
let removeMarkerOnClick( marker )=> {
let lat = marker.latLng.lat (),
lng = marker.latLng.ln (),
position = {};
markers = markers.reduce(( new_markers, marker )=> {
position = marker.f.position;
position.lat() !== lat && position.lng() !== lng ?
new_markers.push( marker ) : marker.f.setMap ( null ); // Change this line from marker.setMap( null ) to marker.f.setMap ( null )
return new_markers;
}, markers);
}
我在谷歌搜索了一个半小时,还没有找到任何东西,所以请帮助我,非常感谢你花时间阅读此文章。你正在函数调用中传递事件
}).addListener( 'click', ( e )=> removeMarkerOnClick( e ) );
you should do:
}).addListener( 'click', ( e )=> removeMarkerOnClick( marker ) );
很抱歉,如果有人试图找到解决方案,麻烦您。 当我尝试搜索Marker对象时,我尝试使用Marker的其他示例,控制台记录Marker对象以检查差异,然后我发现我的Marker对象位于另一个顶级对象中,因此为了访问setMap函数,我必须进入一个较低的级别。 解决方案:
// Map functions in the same file as mapInit function
let addMarker = ( location )=> {
let marker = new google.maps.Marker({
position: location,
map: map,
animation: google.maps.Animation.DROP,
draggable: true
}).addListener( 'click', ( e )=> removeMarkerOnClick( e ) );
markers.push( marker );
};
let removeMarkerOnClick( marker )=> {
let lat = marker.latLng.lat (),
lng = marker.latLng.ln (),
position = {};
markers = markers.reduce(( new_markers, marker )=> {
position = marker.f.position;
position.lat() !== lat && position.lng() !== lng ?
new_markers.push( marker ) : marker.setMap( null );
return new_markers;
}, markers);
}
window.initMap = () => {
//.... body hidden
map.addListener( 'click', ( e )=> addMarker( e.latLng ) );
}
Uncaught TypeError:
MapFunctions.jsx:74
marker.setMap is not a function
at http://localhost:3000/app/app.js?hash=1f01aac45aac6af0dd009bc4623183b2511f62bf:419:20
at Array.reduce (native)
at removeMarkerOnClick (http://localhost:3000/app/app.js?hash=1f01aac45aac6af0dd009bc4623183b2511f62bf:413:23)
at _.Ge.<anonymous> (http://localhost:3000/app/app.js?hash=1f01aac45aac6af0dd009bc4623183b2511f62bf:403:16)
at Object._.z.trigger (https://maps.googleapis.com/maps/api/js?key=AIzaSyB1-fwP96l-_VAicaDGRNMmEU93TY4fcGs&libraries=places&callback=initMap:102:121)
at XT.<anonymous> (https://maps.googleapis.com/maps-api-v3/api/js/28/14/marker.js:19:348)
at _.pG._.z.trigger (https://maps.googleapis.com/maps/api/js?key=AIzaSyB1-fwP96l-_VAicaDGRNMmEU93TY4fcGs&libraries=places&callback=initMap:102:121)
at _.pG.onclick (https://maps.googleapis.com/maps/api/js?key=AIzaSyB1-fwP96l-_VAicaDGRNMmEU93TY4fcGs&libraries=places&callback=initMap:40:81)
at _.Bu._.z.trigger (https://maps.googleapis.com/maps/api/js?key=AIzaSyB1-fwP96l-_VAicaDGRNMmEU93TY4fcGs&libraries=places&callback=initMap:102:121)
at _.Bu.<anonymous> (https://maps.googleapis.com/maps/api/js?key=AIzaSyB1-fwP96l-_VAicaDGRNMmEU93TY4fcGs&libraries=places&callback=initMap:40:81)
let removeMarkerOnClick( marker )=> {
let lat = marker.latLng.lat (),
lng = marker.latLng.ln (),
position = {};
markers = markers.reduce(( new_markers, marker )=> {
position = marker.f.position;
position.lat() !== lat && position.lng() !== lng ?
new_markers.push( marker ) : marker.f.setMap ( null ); // Change this line from marker.setMap( null ) to marker.f.setMap ( null )
return new_markers;
}, markers);
}
哦,是的,对不起,我没有看到,非常感谢,我会尽快修复它并向您报告Hello bro,将marker传递给它只是为了获取它的坐标,但它仍然无法解决导致marker的问题。setMap()不是函数