Javascript 尝试在googlemap信息窗口中添加按钮
我正试图在GoogleMapInfoWindow中添加一个按钮,但我是javascript的初学者,我已经花了数周的时间在这方面,但仍然没有工作。。。所以我希望你们中的一位能够帮助我 给你解释一下。。。我从bdd获取标记,以便在地图上显示它们。然后单击标记,将打开一个信息窗口,其中包含所有信息标记 这一切都很完美,但当我不明白的时候 我已经在每个infoWindow标记中添加了一个提交按钮,我想在单击提交按钮时执行一个操作(保存到数据库)。但是按钮根本没有反应 我删除了所有包含save函数的代码,以保持其清晰,因为有一个警报(“单击”)来测试按钮Javascript 尝试在googlemap信息窗口中添加按钮,javascript,google-maps,infowindow,Javascript,Google Maps,Infowindow,我正试图在GoogleMapInfoWindow中添加一个按钮,但我是javascript的初学者,我已经花了数周的时间在这方面,但仍然没有工作。。。所以我希望你们中的一位能够帮助我 给你解释一下。。。我从bdd获取标记,以便在地图上显示它们。然后单击标记,将打开一个信息窗口,其中包含所有信息标记 这一切都很完美,但当我不明白的时候 我已经在每个infoWindow标记中添加了一个提交按钮,我想在单击提交按钮时执行一个操作(保存到数据库)。但是按钮根本没有反应 我删除了所有包含save函数的代码
<script type="text/javascript">
var bounds;
var markers = [];
var markerCount = 0;
function initialize(){
bounds = new google.maps.LatLngBounds();
var myLatLng = new google.maps.LatLng(46.775090, 2.507969);
var mapOptions={
zoom: 6,
center: myLatLng,
maxZoom: 11,
},
map = new google.maps.Map(document.getElementById("map-canvas"), mapOptions);
setMarkers(map,marker);
const geocoder = new google.maps.Geocoder();
document.getElementById("submit").addEventListener("click", () => {
geocodeAddress(geocoder, map);
});
}
function setMarkers(map,locations){
for(var i=0; i<locations.length; i++){
var station = locations[i];
var myLatLng = new google.maps.LatLng(station['marker_latitude'], station['marker_longitude']);
var infoWindow = new google.maps.InfoWindow();
var image = 'https://marchad.fr/wp-includes/images/marchad.png';
var description = station['marker_text'];
var marker = new google.maps.Marker({
position: myLatLng,
map: map,
icon: image,
title: station['marker_ville'],
id: station['marker_id']
});
(function(marker, i){
google.maps.event.addListener(marker, "click",function(){
var station = locations[i];
var mId = station['marker_id']; //description input field value
var contentString = ("<div id='infoWindow"+station['marker_id']+">"
+"<p class='texte'><strong>"+station['marker_text']+"</strong><p>"
+"<p class='texte'>Ce staliad est géré par un "+station['marker_user_type']+"<p>"
+"<p class='texte'><strong>Adresse : </strong>"+station['marker_adresse']+"<p>"
+"<p class='texte'><strong>Jour de permanence : </strong>"+station['marker_day']+"<p>"
+"<p class='texte'><strong>Dépôts : </strong>de "+station['marker_depot_start_time']+" à "+station['marker_depot_end_time']+"<p>"
+"<p class='texte'><strong>Retraits : </strong>de "+station['marker_start_time']+" à "+station['marker_end_time']+"<p>"
+"<p class='texte'><strong>Téléphone : </strong>"+station['marker_user_contact']+"<p>"
+"<p class='texte'><strong>Mail : </strong>"+station['marker_contact_mail']+"<p>"
+"<p class='texte'><strong>Commentaire : </strong>"+station['marker_commentaire']+"<p>"
+'<form action="ajax-save.php" method="POST" name="SaveMarker" id="SaveMarker'+station['marker_id']+'">'
+'<input id="idInput'+station['marker_id']+'" type="hidden" name="marker-id" class="marker-id'+station['marker_id']+'" value='+station['marker_id']+' />'+station['marker_id']+'</input>'
+'</form>'
+'<input id="inputButton'+station['marker_id']+'" type="button" id="save-marker'+station['marker_id']+'" name="save-marker" class="save-marker'+station['marker_id']+'" data-id="'+station['marker_id']+'" value="M\'inscrire" />'
+'<div id="test'+station['marker_id']+'">'+vendorId+'</div>'
+'<span class="info-content'+station['marker_id']+'">'
+'<h1 class="marker-heading"></h1>'
+'</span>'
+"</div>"
);
infoWindow.close();
infoWindow.setContent(contentString);
infoWindow.open(map,this);
var class_name_removeBtn = 'remove-marker'+station['marker_id'];
var class_name_saveBtn = 'save-marker'+station['marker_id'];
var removeBtn = document.getElementsByClassName(class_name_removeBtn);
var saveBtn = document.getElementsByClassName(class_name_saveBtn);
console.log(removeBtn);
console.log(saveBtn);
//add click listner to save marker button
google.maps.event.addDomListener(saveBtn, "click", function(event) {
var class_name_mReplace = 'info-content'+station['marker_id'];
var class_name_mName = 'marker-id'+station['marker_id'];
var mReplace = document.getElementsByClassName(class_name_mReplace); //html to be replaced after success
var mName = document.getElementsByClassName(class_name_mName); //name input field value
var mId = station['marker_id'];
var vId = vendorId;
console.log(mReplace);
console.log(mName);
console.log(mId);
console.log(vId);
if(mId !=='')
{
alert("click");
save_marker( mName, mId, mReplace,vId); //call save marker function
}else{
alert("Something went wrong. Please contact admin");
}
});
if(typeof removeBtn !== 'undefined') //continue only when save button is present
{
google.maps.event.addDomListener(removeBtn, "click", function(event) {
var class_name_mName = 'marker-id'+station['marker_id'];
var mName = document.getElementsByClassName(class_name_mName); //name input field value
var vId = vendorId;
remove_marker(mName,vId);
});
}
});
})(marker, i);
}
}
</script>
var界;
var标记=[];
var-markerCount=0;
函数初始化(){
bounds=新的google.maps.LatLngBounds();
var mylatng=newgoogle.maps.LatLng(46.775090,2.507969);
var映射选项={
缩放:6,
中心:myLatLng,
maxZoom:11,
},
map=new google.maps.map(document.getElementById(“地图画布”),mapOptions);
设置标记(地图、标记);
const geocoder=新的google.maps.geocoder();
document.getElementById(“提交”).addEventListener(“单击”,()=>{
地理编码地址(地理编码器、地图);
});
}
功能设置标记(地图、位置){
对于(var i=0;i您的第一个问题是saveBtn
不是DOM的一部分,直到在InfoWindow
内容中添加字符串时打开InfoWindow
相关问题:
第二个问题是document.getElementsByClassName(class_name_saveBtn);
返回一个数组,而不是:
document.getElementsByClassName(class_name_saveBtn);
对于单个标记,您需要:
document.getElementsByClassName(class_name_saveBtn)[0];
对于多个标记/信息窗口(获取最后创建的标记/信息窗口):
代码片段:
var界;
var标记=[];
var-markerCount=0;
/*变量标记=[{
地标纬度:47.394144,
经度:0.68484,
标识:1
}] */
var marker=[{“marker\u id”:“6”,“marker\u user\u id”:“0”,“marker\u user\u type”:“marker\u user\u stal”:null,“marker\u categorie”:“5”,“marker\u address”:“marker\u numerio\u voie”:“marker\u voie”:“marker\u zip”:“marker\u ville”:“图卢兹”,“marker\u部门”:“31”,“marker\u地区”:“0”,“marker\u经度”:“1.434917”,“marker\u纬度”:“43.573085”,“marker\u日”:”,“marker\u depot\u start\u time”:“00:00:00”,“marker\u depot\u end\u time”:“00:00:00”,“marker\u end\u time”:“00:00:00”,“marker\u文本”:“Casino Barri\u00e8re”,“marker\u用户联系人”:“marker\u联系人邮件”:“marker\u启用联系人电话”:“marker\u启用联系人”;“marker\u邮件”:“marker\u注释”:空,“marker\u活动”:“Oui”,“id”:空,”marker\u id:null,“user\u id:null,”user\u actif:null},{“marker\u id”:“7”,“marker\u user\u id”:“0”,“marker\u user\u type”:“marker\u user\u Stall”:null,“marker\u categorie”:“6”,“marker\u Address”:“marker\u numero\u voie”:“marker\u voie”:“marker\u zip”:“marker\u ville”:“marker\u ville”:“图卢兹”,“marker\u部门”:“31”,“marker\u地区”:“0”,“marker\u”:“1.7856”,“经度”marker_latitude“:”43.604573“,”marker_day“:”marker_depot_start_time“:”00:00:00“,”marker_depot_end_time“:”00:00:00“,”marker_end_time“:”00:00:00“,”marker_文本“:”Gaumont Wilson电影院“,”marker_用户联系人“:”marker_联系邮件“:”marker_启用联系电话“,”marker_启用联系邮件“:”marker\u commentaire:null,“marker\u actif”:“Oui”,“id”:null,“marker\u id”:null,“user\u id”:null,{“marker\u id”:“8”,“marker\u user\u id”:“0”,“marker\u user\u type”:“marker\u user\u Stall”:null,“marker\u Category”:“6”,“marker\u地址”:“marker\u numero\u voie”:“marker\u voie”:“marker\u zip”:“marker\u ville”:“Labmarker_地区:“0”、“marker_经度”:“1.511496”、“marker_纬度”:“43.53992”、“marker_日”:“marker_depot_开始时间”:“00:00:00”、“marker_depot_结束时间”:“00:00”、“marker_开始时间”:“00:00”、“marker_结束时间”:“00:00”、“marker_文本”:“电影院Gaumont Lab\u00e8ge”、“marker_用户联系人”:“marker_联系人”:“marker_邮件”:”marker\u enable\u contact\u telephone“:”marker\u enable\u contact\u mail“:”marker\u commentaire“:”null“,”marker\u actif“:”null“,”用户id“:”null“,”用户id“:”null“,”marker\u用户id“:”0“,”marker\u用户类型“:”marker\u用户“:”null“,”marker\u categorie“:”6“,”marker\u地址“,”marker\u numero\u voie“:”marker\u voie“:”marker\u voie“:”“marker_zip”:“marker_ville”:“Blagnac”,“marker_Department”:“31”,“marker_region”:“0”,“marker_经度”:“1.373341”,“marker_纬度”:“43.644029”,“marker_day”:“marker_depot_start_time”:“00:00”,“marker_depot_end_time”:“00:00”,“marker_start_开始时间”:“00:00”,“marker_end_时间”:“00:00”,“marker_文本”:“Mega R Blagnac”“marker\u user\u contact”:“marker\u contact\u mail”:“marker\u enable\u contact\u telephone”:“marker\u contact\u mail”:“marker\u commentaire”:null,“marker\u actif”:“Oui”,“id”:null,“user\u id”:null,{“marker\u id”:“10”,“marker\u user\u id”:“0”,“marker\u user\u type”:“marker\u user\u Stall”:null,“marker\u categorie”:“4”,“marker\u Address”“,”marker\u numero\u voie“:”marker\u voie“:”marker\u zip“:”marker\u ville“:”图卢兹“,”marker\u部门“:”31“,”marker\u地区“:”0“,”marker\u经度“:”1.435198“,”marker\u纬度“:”43.62186“,”marker\u日“,”marker\u仓库开始时间“:”00:00“,”marker\u仓库结束时间“:”00:00“,”marker\u开始时间“,”marker_text:“保龄球最低限度”;“marker_联系人”;“marker_联系人”;“marker_联系人”;“marker_联系人”;“marker_启用联系人”;“marker_联系人”;“marker_启用联系人”;“marker_评论”;“marker_活动”;“Oui”,“id”:null,“marker_id”:null,“marker_id”:null,“user_actif”:null,{“marker_id”:“11”;“标记\用户\ id:“0”,“ma”
var removeBtn = document.getElementsByClassName(class_name_removeBtn);
removeBtn = removeBtn[removeBtn.length-1];
var saveBtn = document.getElementsByClassName(class_name_saveBtn);
saveBtn = saveBtn[saveBtn.length-1];