- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我无法切换复选框选择上的标记。我试图在 stackoverflow 上找到答案,但找不到任何合适的答案。
我有 4 个带有坐标的 JSON 文件,并且我为不同的 json 文件制作了 4 个复选框,当我单击两个或多个复选框时,标记会出现,但当我取消选中标记时,标记不会消失。
我尝试使用 setMap(null) 函数,但收到错误“setMap 未定义”。
$(document).ready(function() {
var map;
var mapMarker;
function initMap() {
map = new google.maps.Map(document.getElementById('map'), {
center: {lat: 22.844700, lng: 78.939206},
zoom: 12,
mapTypeId : google.maps.MapTypeId.ROADMAP,
disableDefaultUI: true,
styles: [{"featureType":"all","elementType":"labels.text.fill","stylers":[{"saturation":36},{"color":"#000000"},{"lightness":40}]},{"featureType":"all","elementType":"labels.text.stroke","stylers":[{"visibility":"on"},{"color":"#000000"},{"lightness":16}]},{"featureType":"all","elementType":"labels.icon","stylers":[{"visibility":"off"}]},{"featureType":"administrative","elementType":"geometry.fill","stylers":[{"color":"#000000"},{"lightness":20}]},{"featureType":"administrative","elementType":"geometry.stroke","stylers":[{"color":"#000000"},{"lightness":17},{"weight":1.2}]},{"featureType":"landscape","elementType":"geometry","stylers":[{"color":"#000000"},{"lightness":20}]},{"featureType":"poi","elementType":"geometry","stylers":[{"color":"#000000"},{"lightness":21}]},{"featureType":"road.highway","elementType":"geometry.fill","stylers":[{"color":"#000000"},{"lightness":17}]},{"featureType":"road.highway","elementType":"geometry.stroke","stylers":[{"color":"#000000"},{"lightness":29},{"weight":0.2}]},{"featureType":"road.arterial","elementType":"geometry","stylers":[{"color":"#000000"},{"lightness":18}]},{"featureType":"road.local","elementType":"geometry","stylers":[{"color":"#000000"},{"lightness":16}]},{"featureType":"transit","elementType":"geometry","stylers":[{"color":"#000000"},{"lightness":19}]},{"featureType":"water","elementType":"geometry","stylers":[{"color":"#000000"},{"lightness":17}]}]
});
function interio() {
$.getJSON('json1', function(data) {
for (var i = 0; i < data.feed.entry.length; i++) {
var merker = new google.maps.Marker({
position: new google.maps.LatLng(data.feed.entry[i].gsx$lat.$t,data.feed.entry[i].gsx$longitude.$t),
map: map,
icon: "images/interio-marker.png"
});
}
});
}
function lock() {
$.getJSON('json2', function(data) {
for (var i = 0; i < data.feed.entry.length; i++) {
var merker = new google.maps.Marker({
position: new google.maps.LatLng(data.feed.entry[i].gsx$lat.$t,data.feed.entry[i].gsx$longitude.$t),
map: map,
icon: "images/lock-marker-png.png"
});
}
});
}
function mhe() {
$.getJSON('json3', function(data) {
for (var i = 0; i < data.feed.entry.length; i++) {
var merker = new google.maps.Marker({
position: new google.maps.LatLng(data.feed.entry[i].gsx$lat.$t,data.feed.entry[i].gsx$longitude.$t),
map: map,
icon: "images/mhe-png.png"
});
}
});
}
function appliance() {
$.getJSON('json4', function(data) {
for (var i = 0; i < data.feed.entry.length; i++) {
var merker = new google.maps.Marker({
position: new google.maps.LatLng(data.feed.entry[i].gsx$latitude.$t,data.feed.entry[i].gsx$longitude.$t),
map: map,
icon: "images/appliance-marker.png"
});
}
});
}
//current location
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position) {
var pos = {
lat: position.coords.latitude,
lng: position.coords.longitude
};
var marker = new google.maps.Marker({
position: new google.maps.LatLng(position.coords.latitude,position.coords.longitude),
map: map,
icon: 'images/blue.png'
});
map.setCenter(pos);
}, function() {
handleLocationError(true, infoWindow, map.getCenter());
});
$("input[name = 'mapButton']").on('click', function() {
if(($("#interio").is(':checked') === true) && ($("#lock").is(':checked') === true)) {
interio();
lock();
} else if (($("#interio").is(':checked') === true) && ($("#mhe").is(':checked') === true)) {
interio();
mhe();
} else if (($("#interio").is(':checked') === true) && ($("#appliance").is(':checked') === true)) {
interio();
appliance();
} else if (($("#interio").is(':checked') === true) && ($("#lock").is(':checked') === true) && ($("#mhe").is(':checked') === true)) {
interio();
lock();
mhe();
} else if (($("#interio").is(':checked') === true) && ($("#lock").is(':checked') === true) && ($("#appliance").is(':checked') === true)) {
interio();
lock();
appliance();
} else if(($("#interio").is(':checked') === true) && ($("#mhe").is(':checked') === true) && ($("#appliance").is(':checked') === true)) {
interio();
mhe();
appliance();
} else if (($("#interio").is(':checked') === true) && ($("#lock").is(':checked') === true) && ($("#mhe").is(':checked') === true) && ($("#appliance").is(':checked') === true)) {
interio();
lock();
mhe();
appliance();
}
});
} else {
// Browser doesn't support Geolocation
handleLocationError(false, infoWindow, map.getCenter());
}
function handleLocationError(browserHasGeolocation, infoWindow, pos) {
infoWindow.setPosition(pos);
infoWindow.setContent(browserHasGeolocation ?
'Error: The Geolocation service failed.' :
'Error: Your browser doesn\'t support geolocation.');
}
};
google.maps.event.addDomListener(window, 'load', initMap);
});
html, body {
margin: 0px;
padding: 0px;
background-color: black;
}
.row {
max-width: 100% !important;
margin-left: auto;
margin-right: auto;
max-width: initial;
}
.leftSidebar {
margin-top: 30px;
margin-left: 10px;
padding: 0px;
background-color: black;
}
.leftSidebar img {
width: 250px;
height: 120px;
}
.textLogo {
margin-top: 80px;
color: #EF3753;
font-weight: 400;
font-style: normal;
font-size: 40px;
font-family: 'PT Serif', serif;
line-height: 36px;
text-shadow: 1px 1px 0px #D21F02;
}
.compLogo {
color: #C4C4C4;
margin-top: 80px;
font-weight: 400;
font-style: normal;
font-size: 40px;
font-family: 'PT Serif', serif;
line-height: 36px;
text-shadow: 1px 1px 0px #cccccc;
}
.custom-button {
background-color: #EF3753;
}
.custom-button:hover, .custom-button:focus {
background-color: rgb(158, 34, 54);
}
#map {
display:block;
width:100%;
height:700px;
}
div label input {
margin-right:100px;
}
body {
font-family:sans-serif;
}
#ck-button {
margin:4px;
background-color:#EF3753;
overflow:auto;
float:left;
}
#ck-button label {
float:left;
width:6.0em;
}
#ck-button label span {
text-align: center;
padding: 12px 0px;
display: block;
}
#ck-button label input {
position:absolute;
left:-100px;
}
#ck-button input:hover + span {
background-color:#9E2236;
}
#ck-button input:checked + span {
background-color:#9E2236;
color:#fff;
}
#ck-button input:checked:hover + span {
background-color:#EF3753;
color:#fff;
}
<div id="ck-button">
<label>
<input type="checkbox" name="mapButton" value="1" title="Godrej Interio" id="interio"><span><img src="images/interior.png" alt="Interio" checked></span>
</label>
</div>
<div id="ck-button">
<label>
<input type="checkbox" name="mapButton" value="2" title="Godrej Lock" id="lock"><span><img src="images/lock.png"></span>
</label>
</div>
<div id="ck-button">
<label>
<input type="checkbox" name="mapButton" value="3" title="Godrej Material Handling" id="mhe"><span><img src="images/Material-handling.png"></span>
</label>
</div>
<div id="ck-button">
<label>
<input type="checkbox" name="mapButton" value="4" title="Godrej Appliances" id="appliance"><span><img src="images/appliance.png"></span>
</label>
</div>
最佳答案
切换不应加载带有标记的文件,它应该只执行 setMap(map) 或 setMap(null)。
这是您正在寻找的效果的示例(我想)
所以,我测试了2个数据文件; 4. 看第 15 行,看第 32 行(开关),由你决定
我的数据文件:
json1.txt
[{"lat": 50.0, "lng": 4.0},{"lat": 50.1, "lng": 4.0},{"lat": 50.2, "lng": 4.0},{"lat": 50.3, "lng": 4.0}]
json2.txt
[{"lat": 50.0, "lng": 4.2},{"lat": 50.1, "lng": 4.2},{"lat": 50.2, "lng": 4.2},{"lat": 50.3, "lng": 4.2}]
脚本,index.php:
<script src="https://maps.googleapis.com/maps/api/js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script>
var map;
var markerSets = []; // this will be an array of arrays of markers
function initMap() {
// create map
map = new google.maps.Map(document.getElementById('map'), {
zoom: 8,
center: new google.maps.LatLng(50.5, 4.5),
mapTypeId: google.maps.MapTypeId.ROADMAP
});
// load the markers
loadMarkers('json1.txt', createMarkers);
loadMarkers('json2.txt', createMarkers);
//loadMarkers('json3.txt', createMarkers);
//loadMarkers('json4.txt', createMarkers);
}
function loadMarkers(url, successCallback) {
// make the ajax call
$.ajax({
url: url,
dataType: 'json',
success: successCallback // so, this will be function createMarkers
});
}
function createMarkers(locations) {
// now, we look at the request url to get the class / icon / ...
switch(this.url) {
case 'json1.txt':
var icon = 'interio-marker.png';
var className = 'json1';
var index = 0;
break;
case 'json2.txt':
var icon = 'lock-marker-png.png';
var className = 'json2';
var index = 1;
break;
}
markerSets[index] = [] ;
for(var i in locations) {
var marker = new google.maps.Marker({
position: new google.maps.LatLng(locations[i].lat, locations[i].lng),
icon: 'images/' + icon,
title: 'Set: ' + index + ' - Class: ' + className + ' - item: ' + i,
map: map
});
markerSets[index].push(marker);
}
// create checkbox
$('#checkboxes').append('<input checked="checked" onclick="toggle(this, ' + index + ')" type="checkbox"> ' + className + '<br>');
}
function toggle(checkbox, index) {
for(var i in markerSets[index]) {
if(checkbox.checked) {
markerSets[index][i].setMap(map);
}
else {
markerSets[index][i].setMap(null);
}
}
}
google.maps.event.addDomListener(window, 'load', initMap);
</script>
<style>
#map {
height: 400px;
}
</style>
<div id="map"></div>
<div id="checkboxes"></div>
关于javascript - 从多个 JSON 文件中切换复选框选择标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33840310/
是否有某种方法可以使用 JPA 或 Hibernate Crtiteria API 来表示这种 SQL?或者我应该将其作为 native 执行吗? SELECT A.X FROM (SELECT X,
在查询中, select id,name,feature,marks from (....) 我想删除其 id 在另一个 select 语句中存在的那些。 从 (...) 中选择 id 我是 sql
我想响应用户在 select 元素中选择一个项目。然而这个 jQuery: $('#platypusDropDown').select(function () { alert('You sel
这个问题在这里已经有了答案: SQL select only rows with max value on a column [duplicate] (27 个回答) 关闭8年前。 我正在学习 SQL
This question already has answers here: “Notice: Undefined variable”, “Notice: Undefined index”, and
我在 php 脚本中调用 SQL。有时“DE”中没有值,如果是这种情况我想从“EN”中获取值 应该是这样的,但不是这样的 IF (EXISTS (SELECT epf_application_deta
这可能是一个奇怪的问题,但不知道如何研究它。执行以下查询时: SELECT Foo.col1, Foo.col2, Foo.col3 FROM Foo INNER JOIN Bar ON
如何在使用 Camera.DestinationType.FILE_URI. 时在 phonegap camera API 中同时选择或拾取多个图像我能够一次只选择一张图像。我可以使用 this 在
这是一个纯粹的学术问题。这两个陈述实际上是否相同? IF EXISTS (SELECT TOP 1 1 FROM Table1) SELECT 1 ELSE SELECT 0 相对 IF EXIS
我使用 JSoup 来解析 HTML 响应。我有多个 Div 标签。我必须根据 ID 选择 Div 标签。 我的伪代码是这样的 Document divTag = Jsoup.connect(link
我正在处理一个具有多个选择框的表单。当用户从 selectbox1 中选择一个选项时,我需要 selectbox2 active 的另一个值。同样,当他选择 selectbox2 的另一个值时,我需要
Acme Inc. Christa Woods Charlotte Freeman Jeffrey Walton Ella Hubbard Se
我有一个login.html其中form定义如下: First Initial Plus Last Name : 我的do_authorize如下: "; pri
$.get( 'http://www.ufilme.ro/api/load/maron_online/470', function(data
我有一个下拉列表“磅”、“克”、“千克”和“盎司”。我想要这样一种情况,当我选择 gram 来执行一个函数时,当我在输入字段中输入一个值时,当我选择 pounds 时,我想要另一个函数来执行时我在输入
我有一个 GLSL 着色器,它从输入纹理的 channel 之一(例如 R)读取,然后写入输出纹理中的同一 channel 。该 channel 必须由用户选择。 我现在能想到的就是使用一个 int
我想根据下拉列表中的选定值生成输入文本框。 Options 2 3 4 5 就在这个选择框之后,一些输入字段应该按照选定的数字出现。 最佳答案 我建议您使用响应式(Reac
我是 SQL 新手,我想问一下如何根据首选项和分组选择条目。 +----------+----------+------+ | ENTRY_ID | ROUTE_ID | TYPE | +------
我有以下表结构: CREATE TABLE [dbo].[UTS_USERCLIENT_MAPPING_USER_LIST] ( [MAPPING_ID] [int] IDENTITY(1,1
我在移除不必要的床单时遇到了问题。我查看了不同的论坛并将不同的解决方案混合在一起。 此宏删除工作表(第一张工作表除外)。 Sub wrong() Dim sht As Object Applicati
我是一名优秀的程序员,十分优秀!