Javascript 单击其他标记时自动关闭信息窗口Google Maps API
我的谷歌地图API v3脚本有问题。我正在使用CodeIgniter框架。 问题是,当我单击一个标记,然后单击另一个标记时,InfoWindow Google Maps on previous标记没有关闭。这是我的代码:Javascript 单击其他标记时自动关闭信息窗口Google Maps API,javascript,codeigniter,google-maps,google-maps-api-3,Javascript,Codeigniter,Google Maps,Google Maps Api 3,我的谷歌地图API v3脚本有问题。我正在使用CodeIgniter框架。 问题是,当我单击一个标记,然后单击另一个标记时,InfoWindow Google Maps on previous标记没有关闭。这是我的代码: <script type="text/javascript"> var peta; var gambar_kantor = new Array(); var nama = new Array(); var ka
<script type="text/javascript">
var peta;
var gambar_kantor = new Array();
var nama = new Array();
var kategori = new Array();
var alamat = new Array();
var telpon = new Array();
var x = new Array();
var y = new Array();
var i;
var url;
var gambar_marker;
var gambar_kantor;
var baseurl = "<?php echo base_url() ?>";
function map_init() {
var map = new google.maps.LatLng(-6.990411, 110.422542);
var myStyles =[
{
featureType: "poi",
elementType: "labels",
stylers: [
{ visibility: "off" }
]
}
];
var petaoption = {
zoom: 12,
center: map,
mapTypeId: google.maps.MapTypeId.ROADMAP,
styles: myStyles
};
peta = new google.maps.Map(document.getElementById("map_canvas"),petaoption);
getdatabase();
}
function getdatabase(){
var markers = [];
var info= [];
<?php
$query = $this->db->query("SELECT l.id, l.nama, l.gambar, l.alamat, l.telp, l.latittude, l.longitude, k.nama_kategori, k.ikon
FROM lokasi as l, kategori as k
WHERE l.kategori=k.id");
$i = 0;
$js = "";
foreach ($query->result() as $value) {
$js .= 'nama['.$i.'] = "'.$value->nama.'";
alamat['.$i.'] = "'.$value->alamat.'";
telpon['.$i.'] = "'.$value->telp.'";
x['.$i.'] = "'.$value->latittude.'";
y['.$i.'] = "'.$value->longitude.'";
set_icon("'.$value->ikon.'");
var point = new google.maps.LatLng(parseFloat(x['.$i.']),parseFloat(y['.$i.']));
var contentString = "<table>"+
"<tr>"+
"<td align=center><br><b>" + nama['.$i.'] + "</b></td>"+
"</tr>"+
"<tr>"+
"<td align=center width=300px>" + alamat['.$i.'] + "</td>"+
"</tr>"+
"<tr>"+
"<td align=center> Telp: " + telpon['.$i.'] + "</td>"+
"</tr>"+
"</table>";
var currentInfoWindow = null;
var infowindow = new google.maps.InfoWindow({
content: contentString
});
var marker = new google.maps.Marker({
position: point,
map: peta,
icon: gambar_marker,
clickable: true
});
markers.push(marker);
info.push(infowindow);
google.maps.event.addListener(markers['.$i.'], "click", function() {
info['.$i.'].open(peta,markers['.$i.']);
});
';
$i++;
}
// echo JS
echo $js;
?>
}
var-peta;
var gambar_kantor=新数组();
var nama=新数组();
var kategori=新数组();
var alamat=新数组();
var telpon=新数组();
var x=新数组();
var y=新数组();
var i;
var-url;
var-gambar_标记;
var gambar_kantor;
var baseurl=“”;
函数映射_init(){
var map=new google.maps.LatLng(-6.99041110.422542);
我的风格=[
{
特征类型:“poi”,
elementType:“标签”,
样式:[
{可见性:“关闭”}
]
}
];
变量选项={
缩放:12,
中心:地图,
mapTypeId:google.maps.mapTypeId.ROADMAP,
风格:myStyles
};
peta=new google.maps.Map(document.getElementById(“Map_canvas”),peta选项);
getdatabase();
}
函数getdatabase(){
var标记=[];
var信息=[];
您可以在循环之外声明一个infowindow,然后单击每个标记会打开自己的infowindow,并用适当的内容填充它
在下面的示例中,我在标记本身上设置了contentString
属性
var infowindow = new google.maps.InfoWindow();
<?php
foreach ($query->result() as $value) {
....
?>
var marker = new google.maps.Marker({
position: point,
map: peta,
icon: gambar_marker,
clickable: true,
content: contentString
});
markers.push(marker);
google.maps.event.addListener(marker, "click", function() {
infowindow.setContent(marker.content);
infowindow.open(peta,marker);
});
<?php
}
?>
var infowindow=new google.maps.infowindow();
var marker=new google.maps.marker({
位置:点,,
地图:善待动物组织,
图标:甘巴鲁标记,
可点击:正确,
内容:contentString
});
标记器。推(标记器);
google.maps.event.addListener(标记“单击”,函数(){
infowindow.setContent(marker.content);
信息窗口。打开(善待动物组织,标记);
});
您可以在循环之外只声明一个信息窗口。然后,单击每个标记时,会打开该信息窗口本身,并用适当的内容填充它
在下面的示例中,我在标记本身上设置了contentString
属性
var infowindow = new google.maps.InfoWindow();
<?php
foreach ($query->result() as $value) {
....
?>
var marker = new google.maps.Marker({
position: point,
map: peta,
icon: gambar_marker,
clickable: true,
content: contentString
});
markers.push(marker);
google.maps.event.addListener(marker, "click", function() {
infowindow.setContent(marker.content);
infowindow.open(peta,marker);
});
<?php
}
?>
var infowindow=new google.maps.infowindow();
var marker=new google.maps.marker({
位置:点,,
地图:善待动物组织,
图标:甘巴鲁标记,
可点击:正确,
内容:contentString
});
标记器。推(标记器);
google.maps.event.addListener(标记“单击”,函数(){
infowindow.setContent(marker.content);
信息窗口。打开(善待动物组织,标记);
});
也许这个链接对你有用
先前答复:
确保在JS中的google maps主代码之外声明全局变量:
文件:var lastOpenedInfoWindow;
祝你好运!也许这个链接对你有用
先前答复:
确保在JS中的google maps主代码之外声明全局变量:
文件:var lastOpenedInfoWindow;
祝你好运!Hello@amenadiel谢谢你的回复,我已经按照你的指示操作了。但是信息窗口可以在一个标记上单击,当我单击另一个标记时,它不会显示信息窗口。Hello@amenadiel谢谢你的回复,我已经按照你的指示操作了。但是当我单击另一个标记时,信息窗口可以在标记上单击不显示信息窗口。如果您在堆栈网络中遇到适合该问题的答案,最好在此处将此问题标记/关闭为重复,只需抬头:)如果您在堆栈网络中遇到适合该问题的答案,最好在此处将此问题标记/关闭为重复e、 只是提醒一下:)