gpt4 book ai didi

javascript - Google Map API V3 - 点击 Marker 将更多信息内容显示为叠加层(就像在 Google Maps 中一样)

转载 作者:可可西里 更新时间:2023-11-01 02:53:47 25 4
gpt4 key购买 nike

我们使用 Google Map Api V3 在 HTML 容器中加载谷歌地图。我们有一个位置搜索表单。提交后,我们将获得可用位置并在 map 中设置标记。加载标记后,单击每个标记,我们需要显示标题、地址详细信息和设计,就像我们在谷歌地图中所拥有的那样。 (在谷歌地图中——当点击红色标记时,我们可以看到更多信息叠加框,其中包含其他详细信息,例如星级、路线、附近搜索、保存到 map 等。)

我们是否内置了 api 函数来加载上面的覆盖框。或者我们没有加载细节的功能,就像我们目前在谷歌地图中拥有的那样。

当我在谷歌和 map 文档中搜索时,我可以看到显示叠加窗口和在框中写入内容的选项。但是我没有看到根据需要加载内容的选项。

我已粘贴下面的代码以供引用。

       var map = null;
gmap_ready = function (){
var myLatlng = new google.maps.LatLng(43.834527,-103.564457);
var myOptions = {
zoom: 3,
center: myLatlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

   function fnLoadMarkers(){
var locations = [
['S Dakota', 43.834527,-103.564457, 1],
['Texas', 31.428663,-99.418947, 2],
['California', 36.668419,-120.249025, 3],
['Newyork', 43.197167,-76.743166, 4],
['Missouri', 38.410558,-92.73926, 5]
];
setMarkers(map,locations);
}
function setMarkers(map, locations) {
var image = 'images/marker.gif';

for (var i = 0; i < locations.length; i++) {
var currLocation = locations[i];
var latLng = new google.maps.LatLng(currLocation[1], currLocation[2]);
var marker = new google.maps.Marker({
position: latLng,
map: map,
icon: image,
title: currLocation[0],
zIndex: currLocation[3]
});
google.maps.event.addListener(marker, 'click', function() {
var latitude = this.position.lat();
var longitude = this.position.lng();
window.open("http://maps.google.com/maps?f=q&source=s_q&hl=en&geocode=&q="+latitude+","+longitude+"&sll="+latitude+","+longitude+"&sspn=0.172749,0.4422&ie=UTF8&ll="+latitude+","+longitude+"&spn=0.162818,0.4422&z=11&iwloc=A");
});
}

如果有关于如何实现这些结果的任何提示,那将会很有帮助。另外,请指导是否可以通过 Google API V3。

提前致谢

问候

斯里尼瓦桑.C

最佳答案

我不明白您为什么要从 Google Maps API 标记打开一个新的 Google map 窗口?您不能通过 URL 在 Google map 上添加信息窗口。

我就是这样做的。

<!DOCTYPE html>  
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<link href="http://code.google.com/apis/maps/documentation/javascript/examples/default.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">
// Initiate map
function initialize(data) {
// Make position for center map
var myLatLng = new google.maps.LatLng(data.lng, data.lat);

// Map options
var myOptions = {
zoom: 10,
center: myLatLng,
mapTypeId: google.maps.MapTypeId.HYBRID
};

// Initiate map
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

// Info window element
infowindow = new google.maps.InfoWindow();

// Set pin
setPin(data);
}
// Show position
function setPin(data) {
var pinLatLng = new google.maps.LatLng(data.lng, data.lat);
var pinMarker = new google.maps.Marker({
position: pinLatLng,
map: map,
data: data
});

// Listen for click event
google.maps.event.addListener(pinMarker, 'click', function() {
map.setCenter(new google.maps.LatLng(pinMarker.position.lat(), pinMarker.position.lng()));
map.setZoom(18);
onItemClick(event, pinMarker);
});
}
// Info window trigger function
function onItemClick(event, pin) {
// Create content
var contentString = pin.data.text + "<br /><br /><hr />Coordinate: " + pin.data.lng +"," + pin.data.lat;

// Replace our Info Window's content and position
infowindow.setContent(contentString);
infowindow.setPosition(pin.position);
infowindow.open(map)
}
</script>
</head>
<body onload="initialize({lat:-3.19332,lng:55.952366,text:'<h2>Edinburgh</h2><i>Nice city!</i>'})">
<div id="map_canvas">
</div>
</body>
</html>

关于javascript - Google Map API V3 - 点击 Marker 将更多信息内容显示为叠加层(就像在 Google Maps 中一样),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10999858/

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