- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在尝试创建一个 map ,其中有一些多边形,然后用户可以输入特定的城市或邮政编码,然后将标记设置为输入的点。如果输入的城市/邮政编码在多边形内,则应该有一个信息窗口,其中包含一些特定的输出,例如“您的位置位于 X 区域”,如果不是,则应该有不同的输出。到目前为止,我得到的是 map 上的两个多边形,您可以输入一个城市并设置标记。但不起作用的是 InfoWindow(在“Click”事件中没有 InfoWindow),尽管它应该像我使用 Google 开发人员示例一样工作。而且我不知道如何实现所描述的查询,如果标记是否在多边形中,以及与信息窗口形式的特定输出的组合...
抱歉,我的英语真的很糟糕 - 希望你们明白我在说什么!
<!DOCTYPE html>
<html>
<head>
<title>Glaswelt24 Montagebereich</title>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no">
<meta charset="utf-8">
<style>
html, body, #map-canvas {
height: 550px;
margin: 20px;
padding: 20px
width: 200px;
}
</style>
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false&language=ch"></script>
<script>
//Deklarierung der Variablen
var geocoder;
var map;
function initialize() {
geocoder = new google.maps.Geocoder();
var mapOptions = {
zoom: 8,
center: new google.maps.LatLng(46.8131873, 8.2242101),
disableDefaultUI: false
};
var bermudaTriangle;
var bermudaTriangle2;
//Deklarierung der neuen Google Maps Karte
map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
//Inhalt des InfoWindow als Variable deklarieren
var contentString = '<div id="content">'+
'<div id="siteNotice">'+
'</div>'+
'<h1 id="firstHeading" class="firstHeading">Uluru</h1>'+
'<div id="bodyContent">'+
'<p><b>Uluru</b>, also referred to as <b>Ayers Rock</b>, is a large ' +
'sandstone rock formation in the southern part of the '+
'Northern Territory, central Australia. It lies 335 km (208 mi) '+
'south west of the nearest large town, Alice Springs; 450 km '+
'(280 mi) by road. Kata Tjuta and Uluru are the two major '+
'features of the Uluru - Kata Tjuta National Park. Uluru is '+
'sacred to the Pitjantjatjara and Yankunytjatjara, the '+
'Aboriginal people of the area. It has many springs, waterholes, '+
'rock caves and ancient paintings. Uluru is listed as a World '+
'Heritage Site.</p>'+
'<p>Attribution: Uluru, <a href="http://en.wikipedia.org/w/index.php?title=Uluru&oldid=297882194">'+
'http://en.wikipedia.org/w/index.php?title=Uluru</a> '+
'(last visited June 22, 2009).</p>'+
'</div>'+
'</div>';
//InfoWindow erstellen und Inhalt festlegen
var infowindow = new google.maps.InfoWindow({
content: contentString
});
//Montagegebiet 1
var triangleCoords = [
new google.maps.LatLng(47.554615, 7.59446),
new google.maps.LatLng(47.377455, 8.536715),
new google.maps.LatLng(46.9546699, 7.39487),
new google.maps.LatLng(47.554615, 7.59446)
];
//Montagegebiet 2
var triangleCoords2 = [
new google.maps.LatLng(46.74021, 7.638205),
new google.maps.LatLng(46.1731573, 8.7772588),
new google.maps.LatLng(47.04739, 8.3183349),
new google.maps.LatLng(46.74021, 7.638205)
];
//Aussehen des Montagebiets
bermudaTriangle = new google.maps.Polygon({
paths: triangleCoords,
strokeColor: '#4BC4DF',
strokeOpacity: 0.8,
strokeWeight: 2,
fillColor: '#4BC4DF',
fillOpacity: 0.35
});
//Aussehen des Montagegebiets 2
bermudaTriangle2 = new google.maps.Polygon({
paths: triangleCoords2,
strokeColor: '#4BC4DF',
strokeOpacity: 0.8,
strokeWeight: 2,
fillColor: '#4BC4DF',
fillOpacity: 0.35
});
//Setzen der Montagegebiete auf die Karte
bermudaTriangle.setMap(map);
bermudaTriangle2.setMap(map);
}
//Aufrufen der Geocode Funktion die einen Marker auf die Karte setzt
function codeAddress() {
var address = document.getElementById('address').value;
geocoder.geocode( { 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
map.setCenter(results[0].geometry.location);
//Marker auf der Karte
var marker = new google.maps.Marker({
map: map,
position: results[0].geometry.location,
animation: google.maps.Animation.DRPOP,
draggable: false,
clickable: true
});
} else {
alert('Die Eingabe war falsch');
}
});
//Beim "Event" Klick wird Marker geöffnet
oogle.maps.event.addListener(marker, 'click', function() {
infowindow.open(map,marker);
});
}
//Initialisieren der Karte
google.maps.event.addDomListener(window, 'load', initialize);
</script>
</head>
<body>
<!-- HTML Teil -->
<h1>Montageservice Google Maps</h1>
<div id="panel">
<input id="address" type="textbox" value="Kundeneingabe" onFocus="if(this.value=='Kundeneingabe') this.value=''">
<input type="button" value="Suche" onclick="codeAddress()">
</div>
<div id="map-canvas"></div>
</body>
</html>
最佳答案
有一个拼写错误
oogle.maps.event.addListener(marker, 'click', function() {
//^ missing a g
initialize
范围内定义的,但 codeAddress
是在全局范围内定义的,无法访问这些变量google.maps.geometry.poly.containsLocation
检测标记是否在多边形内(注意:您必须包含几何库,默认情况下不会加载)修复代码(我删除了不相关的内容):
<小时/><script src="https://maps.googleapis.com/maps/api/js?v=3&sensor=false&language=ch&libraries=geometry"></script>
<script>
function initialize() {
var geocoder = new google.maps.Geocoder(),
mapOptions = { zoom: 8,
center: new google.maps.LatLng(46.8131873, 8.2242101)
},
//use only a single marker
marker = new google.maps.Marker(),
infowindow = new google.maps.InfoWindow(),
map = new google.maps.Map(document.getElementById('map-canvas'),
mapOptions),
//store the polygons in an array for iteration
polys = [];
polys[0] = new google.maps.Polygon({
title:'Montagegebiet 1',
paths: [
new google.maps.LatLng(47.554615, 7.59446),
new google.maps.LatLng(47.377455, 8.536715),
new google.maps.LatLng(46.9546699, 7.39487),
new google.maps.LatLng(47.554615, 7.59446)
],
map:map
});
polys[1] = new google.maps.Polygon({
title:'Montagegebiet 2',
paths: [
new google.maps.LatLng(46.74021, 7.638205),
new google.maps.LatLng(46.1731573, 8.7772588),
new google.maps.LatLng(47.04739, 8.3183349),
new google.maps.LatLng(46.74021, 7.638205)
],
map:map
});
google.maps.event.addListener(marker, 'click', function() {
infowindow.open(map,marker);
});
//define the codeAdress-function in the scope of initialize
//to be able to access all variables without declaring them global
window.codeAddress = function() {
var address = document.getElementById('address').value;
geocoder.geocode( { 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
var position = results[0].geometry.location,
//default-content for infowindow
content = 'Die Eingabe befindet sich in keinem der Bereiche';
map.setCenter(position);
marker.setOptions({
map:map,
animation: google.maps.Animation.DRPOP,
position: position
});
for(var i=0;i<polys.length;++i){
//check if the latLng is placed within the polygon
if(google.maps.geometry.poly.containsLocation(position,polys[i])){
//if it does, update the content for the infowindow
content = 'Die Eingabe wurde in '+polys[i].title+' lokalisiert';
//and leave the loop
break;
}
}
//open the infowindow
infowindow.setOptions({
map:map,
position:position,
content:content
});
}
else {
//hide the infowindow
infowindow.setMap(null);
alert('Die Eingabe lieferte kein Ergebnis');
}
});
}
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
<小时/>
关于javascript - Google Maps API3 InfoWindow 并查询标记是否在多边形中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22750406/
我已经使用 jquery 删除了 google map 的 infoWindow 的关闭按钮,但是无法获取 infoWindow 宽度来进行计算以使文本位于 InfoWindow 的中心。 移除关闭按
我很确定这在很长一段时间内都不是 Google Maps API 的默认行为,但与此同时它肯定已经改变了。 我修改了google提供的Fiddle:https://developers.google.
我遇到了一个奇怪的问题。 infowindow.js 中显示 f = undefined。但我什至没有文件 infowindow.js...当我单击它时就会发生这种情况。它必须显示信息窗口,但它没有。
我在向标记添加信息窗口时遇到了问题。虽然它们看起来都很好,如果我点击它们,窗口就会出现,我似乎遇到了一个错误,我不知道它想要什么。 问题在于,当我单击标记时,会出现包含所有信息的窗口。我收到一个:“U
我在下面的代码中找不到错误,但它显示所有信息窗口的相同内容。 $('#map').gmap({'zoom': 2, 'disableDefaultUI':true}).bind('init', fun
我想将鼠标悬停在标记上时的信息窗口聚焦。只要他停留在信息窗口上,窗口就会打开。下面是我的代码 content=""+j+"."+obj.identifier+"'>"+obj.company.subs
我正在使用 GMaps在我的网站上显示 map 。使用信息窗口创建 map 非常容易。但是,信息窗口仅在单击标记时出现。 我的Javascript: var map; $(document).read
我运行以下代码以在与我的 GeoLocation 标记分开的数组中显示 map 上的标记。创建一个简单的外部链接很容易,但我如何在数组标记中创建相同的外部链接,以及这在 IE 中不起作用的任何原因?
通常我的 map 上有很多标记(比如代表商店)。我有显示标记所代表的商店基本信息的信息窗口,然后,我想在信息窗口 HTML 上放置一个按钮,例如,显示“详细信息”。信息窗口的 html 很简单。信息窗
我正在使用这个非常基本的代码来使 InfoWindow 成为“单例”并在需要时打开它。 (在 iOS5 上的 UIWebView 中) google.maps.event.addListener(ma
目前,当用户单击我们 map 屏幕上的位置标记时,将调用页面方法以从服务器检索附加信息。当 page 方法成功时,结果用于定义显示在 map 上的 infoWindow 的内容。在 page 方法很慢
我实现了一个选项来找到离实际位置最近的标记。我在带有自定义信息窗口的 ClusterItem 中拥有所有标记。在没有聚类的普通谷歌地图上,我可以只使用 marker.showInfoWindow();
我有以下代码,但每次我尝试添加一个按钮时它都不起作用。 有人可以告诉我如何添加一个在点击时显示警告框的按钮吗? var infowindow = new google.maps.InfoWindow(
我正在尝试向路线添加信息窗口。有很多示例可以在标记上的事件监听器上添加 InfoWindow。 但是我怎样才能移动信息窗口以显示在从一个标记到另一个标记的实际计划路线上。之前已经有人试过问这个问题,但
我在click 上设置了一个监听器,以获取我未创建 GoogleMaps (V3 API) 的标记。单击它时,我首先使用一些简单的纯 HTML 和“正在加载”gif 加载信息窗口。 然后我调用一个方法
我正在使用谷歌地图 API 来绘制事件列表。事件有事件举办地点的坐标。大多数场馆都会举办不止一场事件。如何在一个信息窗口中显示具有相同坐标的所有事件。 var locations = [ ['ev
我有一张 map ,我一直试图找出将信息窗口添加到数组中的标记,但我被卡住了。使用单个 map 和单个标记,我可以毫无问题地添加信息窗口。但在我的一生中,我无法让信息窗口在我的数组中工作。如果有人能帮
我从 mysql 数据库获取坐标,如下所示 (, ) (, ) 当我绘制 map 时,它会显示两个点和方向,如下面的代码所示 function initialize() { var m
如何循环关联数组的值?现在我一次只能参加一个协会!在这里,我将 MySQL 表中的所有值传递给 json_encode,仅将纬度和经度作为数组的数组以及其他字符串。谢谢 function myMap(
所以我一直在使用 google-maps-react现在几个月了,一切正常,现在只有一点我不明白。这可能就是我无法实现这一目标的原因。 这是我的 的结构: {this.state
我是一名优秀的程序员,十分优秀!