gpt4 book ai didi

javascript div 显示不正确

转载 作者:行者123 更新时间:2023-11-30 17:45:09 25 4
gpt4 key购买 nike

我不经常使用 JavaScript。在后端工作更多。请温柔点。

背景:

我的任务是在 map 上可视化地址数据库。

所以,我选择了谷歌地图。

构建了一个 KML 和一个页面,看起来非常不错。

但是,我无法让街景 map 显示在正确的弹出窗口中。

在视觉上,我可以解释问题。放大几次,然后单击几个图钉/图标。

它应该打开一个窗口。单击另一个图钉,原始窗口应该消失,具有正确街景的新窗口应该出现在其中。

此刻。第一个窗口打开是空的。然后当您单击第二个图标时,会出现一个新的空窗口, map 会出现在第一个窗口中。

从技术上讲,我不知道如何解释这个问题。感觉我需要以某种方式让它不可见或摧毁它。

这就是我看到的...

this is what I am seeing

这是我正在处理的网站。 http://googlemap.azurewebsites.net/

这是代码...

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Street View service</title>
<style>
html, body, #map-canvas {
height: 100%;
margin: 0px;
padding: 0px
}
</style>
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>
<script>
function initialize() {

var cardiff = new google.maps.LatLng(42.345573, -71.098326);
geocoder = new google.maps.Geocoder();

var mapOptions = {
center: cardiff,
zoom: 14
};

var map = new google.maps.Map(
document.getElementById('map-canvas'), mapOptions);


var kmlLayer = new google.maps.KmlLayer({
url: 'http://googlemap.azurewebsites.net/data6.txt',
suppressInfoWindows: true,
map: map
});

google.maps.event.addListener(kmlLayer, 'click', function (kmlEvent) {

var infowindow = new google.maps.InfoWindow({
content: "<div id='pano' style='width: 400px; height: 300px;'></div><div>" + kmlEvent.featureData.name + "</div>" + "<div>" + kmlEvent.featureData.description + "</div>"
});


var text = kmlEvent.featureData.description;
geocoder.geocode({ 'address': kmlEvent.featureData.description }, function (results, status)
{
var address = new google.maps.LatLng(results[0].geometry.location.ob, results[0].geometry.location.pb);
var panoramaOptions = {
position: address,
pov: {
heading: 34,
pitch: 10
}
};

//obj = document.getElementById("pano");
//document.body.removeChild(obj);

var marker = new google.maps.Marker({
position: address,
map: map,
title: 'Uluru (Ayers Rock)'
});

var panorama = new google.maps.StreetViewPanorama(document.getElementById('pano'), panoramaOptions);
infowindow.open(map, marker);
map.setStreetView(panorama);

});

});


}

google.maps.event.addDomListener(window, 'load', initialize);

</script>
</head>
<body>
<div id="map-canvas" style="width: 100%; height: 100%"></div>
<div id="pano"></div>
<!--<div id="pano" style="position:absolute; left:410px; top: 8px; width: 400px; height: 300px;"></div>-->
</body>
</html>

如有任何帮助,我们将不胜感激。

崔维

最佳答案

您遇到了时间问题。

  1. 点击标记
  2. 创建标记和信息窗口
  3. 打开信息窗口
  4. 尝试打开街景,DOM 中没有 id='pano' div(信息窗口尚未呈现)
  5. 点击另一个标记
  6. 创建标记和信息窗口
  7. 打开信息窗口
  8. 打开街景,现在有一个 id='pano' 的 div(在最后一个标记的信息窗口中)。

两件事:

  1. 只使用一个全局信息窗口
  2. 在信息窗口上使用“domready”事件来渲染街景。

working example

    <script>
var infowindow = new google.maps.InfoWindow({});
function initialize() {

var cardiff = new google.maps.LatLng(42.345573, -71.098326);
geocoder = new google.maps.Geocoder();

var mapOptions = {
center: cardiff,
zoom: 14
};

var map = new google.maps.Map(
document.getElementById('map-canvas'), mapOptions);


var kmlLayer = new google.maps.KmlLayer({
url: 'http://googlemap.azurewebsites.net/data6.txt',
suppressInfoWindows: true,
map: map
});

google.maps.event.addListener(kmlLayer, 'click', function (kmlEvent) {
infowindow.setContent("<div id='pano' style='width: 400px; height: 300px;'></div><div>" + kmlEvent.featureData.name + "</div>" + "<div>" + kmlEvent.featureData.description + "</div>");

var address = kmlEvent.featureData.description;
geocoder.geocode({ 'address': address }, function (results, status)
{
var latlng = results[0].geometry.location;
var panoramaOptions = {
position: latlng,
pov: {
heading: 34,
pitch: 10
}
};

var marker = new google.maps.Marker({
position: latlng,
map: map,
title: address
});
infowindow.open(map, marker);
google.maps.event.addListenerOnce(infowindow, 'domready', function() {
var panorama = new google.maps.StreetViewPanorama(document.getElementById('pano'), panoramaOptions);
map.setStreetView(panorama);
});

});

});

}

google.maps.event.addDomListener(window, 'load', initialize);

</script>

关于javascript div 显示不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20292835/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com