您好,我正在使用谷歌地图,我想了解您对以下问题的看法。
是否可以在 googlemap 中隐藏或变灰除其他区域以外的所有区域?
如果是,请帮我解决这个问题。
我试过了,但直到现在还没有找到任何解决方案。
这是我的 FIDDLE DEMO
在该演示中,我想灰化/隐藏所有没有标记的区域的标签。
这是我用来将标记固定在 map 上的示例代码。
JS 代码:
<script>
var infowindow;
var map;
var myLatLng = [];
function initialize() {
var mapOptions = {
zoom: 3,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
map = new google.maps.Map(document.getElementById('map_canvas'), mapOptions);
var bounds = new google.maps.LatLngBounds();
var obj = {
"JobRecord": [{
"ApplyUrl": "test",
"GeoLocations": {
"GeoLocationRecord": [{
"Latitude": "21.543333",
"Longitude": "39.172777"
}, {
"Latitude": "21.299135",
"Longitude": "40.428313"
}]
},
"JobId": "493743",
"JobTitle": "Sales Associate",
"Locations": {
"LocationRecord": [{
"Group": "Saudi Arabia",
"Title": "Taif"
}, {
"Group": "Saudi Arabia",
"Title": "Jeddah"
}]
}
}, {
"ApplyUrl": "test",
"GeoLocations": {
"GeoLocationRecord": {
"Latitude": "55.755826",
"Longitude": "37.617300"
}
},
"JobId": "492725",
"JobTitle": "Business Director - Starbucks - Russia",
"Locations": {
"LocationRecord": {
"Group": "Russia",
"Title": "Moscow"
}
}
}, {
"ApplyUrl": "test",
"GeoLocations": {
"GeoLocationRecord": {
"Latitude": "25.271139",
"Longitude": "55.307485"
}
},
"JobId": "492730",
"JobTitle": "Vice President - Victoria's Secret",
"Locations": {
"LocationRecord": {
"Group": "UAE",
"Title": "Dubai"
}
}
}]
};
var jobs = obj.JobRecord;
for (var i = 0; i < jobs.length; i++) {
if (jobs[i].GeoLocations.length != 0) {
var geoLocationRecord = jobs[i].GeoLocations.GeoLocationRecord;
var myjobs = new Array();
var single = new Object();
if (geoLocationRecord.length === undefined) {
single.JobId = jobs[i].JobId;
single.JobTitle = jobs[i].JobTitle;
single.Locations = jobs[i].Locations.LocationRecord;
var search = [geoLocationRecord.Latitude, geoLocationRecord.Longitude, single];
isLocationFree(search);
} else {
for (var j = 0; j < geoLocationRecord.length; j++) {
single[j] = new Object();
single[j].JobId = jobs[i].JobId;
single[j].JobTitle = jobs[i].JobTitle;
single[j].Locations = jobs[i].Locations.LocationRecord[j];
var search = [geoLocationRecord[j].Latitude, geoLocationRecord[j].Longitude, single[j]];
isLocationFree(search);
} //finish inner loop
}
} //finish if condition
} //finish loop
for (var x = 0; x < myLatLng.length; x++) {
var latlng = new google.maps.LatLng(parseFloat(myLatLng[x][0]),
parseFloat(myLatLng[x][1]));
bounds.extend(latlng);
createMarker(myLatLng[x], latlng);
}
map.fitBounds(bounds);
var listener = google.maps.event.addListener(map, "idle", function () {
if (map.getZoom() > 16) map.setZoom(3);
google.maps.event.removeListener(listener);
});
}
function createMarker(jobs, latlng) {
var marker = new google.maps.Marker({
position: latlng,
map: map
});
google.maps.event.addListener(marker, "click", function () {
if (infowindow) infowindow.close();
infowindow = new google.maps.InfoWindow({
content: createMessage(jobs)
});
infowindow.open(map, marker);
});
return marker;
}
function createMessage(jobs) {
console.log(jobs);
console.log("Total==>" + (Number(jobs.length) - 2));
if (jobs[2].Locations !== undefined) {
var locationTitle = jobs[2].Locations.Title;
} else {
var locationTitle = "";
}
var message = '';
message += '<div id="popupContent">' +
'<strong id="firstHeading" class="firstHeading">' + (Number(jobs.length) - 2) + " Vacancies in " + locationTitle + '</strong>' +
'<br><br>';
for (var y = 2; y < jobs.length; y++) {
message += '<a href="http://jobsearch.alshaya.com/cau/en/job/' + jobs[y].JobId + '" target="_blank">' + jobs[y].JobTitle + '</a><br>';
}
message += '</div>';
return message;
}
function isLocationFree(search) {
for (var i = 0; i < myLatLng.length; i++) {
if (myLatLng[i][0] === search[0] && myLatLng[i][1] === search[1]) {
myLatLng[i].push(search[2]);
return true;
}
}
myLatLng.push(search);
return myLatLng;
}
$(document).ready(function () {
initialize();
});
</script>
最佳答案
使用 Fusion Table Layer 可以很容易地做到这一点.
我在这里将提到的“区域”或“地区”视为国家 - 我猜您只是想将您的 XML 提要中不存在的国家显示为灰色?
我在这里硬编码了您示例中的国家/地区 - 俄罗斯、沙特阿拉伯和阿拉伯联合酋长国。您必须自己创建逻辑来排除您在提要中遇到的国家/地区。
function greyoutWorld() {
var world_geometry = new google.maps.FusionTablesLayer({
query: {
select: 'geometry',
from: '1N2LBk4JHwWpOY4d9fobIn27lfnZ5MDy-NoqqRpk',
//select all but russia, saudi arabia and united arab emirates
where: "ISO_2DIGIT NOT IN ('RU', 'SA', 'AE')"
},
//add some grey color to cover the rest of the world
styles: [{
polygonOptions: {
fillColor: "#dadada",
strokeColor: "#ebebeb",
strokeWeight: "int"
},
polylineOptions: {
strokeColor: "#rrggbb",
strokeWeight: "int"
}
}],
map: map,
suppressInfoWindows: true
});
}
结果是这样的:
fork fiddle -> http://jsfiddle.net/QUPdZ/
更新
关于“红圈标记”,该功能内置于Fusion Table图层代码中,无法抑制。查看documentation ,在“限制”下:
When looking at the map, you may notice:
* The ten largest-area components of a multi-geometry are shown.
* When zoomed farther out, tables with more than 500 features will show dots (not lines or polygons).
解决方法是添加
minZoom: 2
到 map 选项,就像在这个 fiddle 中 -> http://jsfiddle.net/LVRp2/
国家几何融合表 - World Country Boundaries.kml - 是公开的,可在此处访问:
https://www.google.com/fusiontables/DataSource?docid=1N2LBk4JHwWpOY4d9fobIn27lfnZ5MDy-NoqqRpk .
另一种相同的来源我猜 - World Country Boundaries.csv - 可以在这里找到:
https://www.google.com/fusiontables/DataSource?docid=1uL8KJV0bMb7A8-SkrIe0ko2DMtSypHX52DatEE4 .
两者都适用于上述 fiddle 。
关于javascript - 谷歌地图去除标签或灰色区域,部分地区除外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21328498/
我试图使用yard记录一些Ruby代码,尽管我所做的正是所描述的here或here#@param[Integer]thenumberoftrials(>=0)#@param[Float]successprobabilityineachtrialdefinitialize(n,p)#initialize...end虽然我仍然得到这个奇怪的错误@paramtaghasunknownparametername:the@paramtaghasunknownparametername:success然后生成的html看起来很奇怪。我称yard为:$yarddoc-mmarkdown我做错了什么?
我有一个div,它根据表单是否正确提交而改变。我想知道是否可以检查类的特定元素?开始元素看起来像这样。如果输入不正确,添加错误类。 最佳答案 试试这个:browser.div(:id=>"myerrortest").class_name更多信息:http://watir.github.com/watir-webdriver/doc/Watir/HTMLElement.html#class_name-instance_method另一种选择是只查看具有您期望的类的div是否存在browser.div((:id=>"myerrortes
我知道还有其他相同的问题,但他们没有解决我的问题。我不断收到错误:Aws::Errors::MissingRegionErrorinBooksController#create,缺少区域;使用:region选项或将区域名称导出到ENV['AWS_REGION']。但是,这是我的配置开发.rb:config.paperclip_defaults={storage::s3,s3_host_name:"s3-us-west-2.amazonaws.com",s3_credentials:{bucket:ENV['AWS_BUCKET'],access_key_id:ENV['AWS_ACCE
我遇到了一个非常奇怪的问题,我很难解决。在我看来,我有一个与data-remote="true"和data-method="delete"的链接。当我单击该链接时,我可以看到对我的Rails服务器的DELETE请求。返回的JS代码会更改此链接的属性,其中包括href和data-method。再次单击此链接后,我的服务器收到了对新href的请求,但使用的是旧的data-method,即使我已将其从DELETE到POST(它仍然发送一个DELETE请求)。但是,如果我刷新页面,HTML与"new"HTML相同(随返回的JS发生变化),但它实际上发送了正确的请求类型。这就是这个问题令我困惑的
如何只加载map边界内的标记gmaps4rails?当然,在平移和/或缩放后加载新的。与此直接相关的是,如何获取map的当前边界和缩放级别? 最佳答案 我是这样做的,我只在用户完成平移或缩放后替换标记,如果您需要不同的行为,请使用不同的事件监听器:在你看来(index.html.erb):{"zoom"=>15,"auto_adjust"=>false,"detect_location"=>true,"center_on_user"=>true}},false,true)%>在View的底部添加:functiongmaps4rail
我有这样的HTML代码:Label1Value1Label2Value2...我的代码不起作用。doc.css("first").eachdo|item|label=item.css("dt")value=item.css("dd")end显示所有首先标记,然后标记标签,我需要“标签:值” 最佳答案 首先,您的HTML应该有和中的元素:Label1Value1Label2Value2...但这不会改变您解析它的方式。你想找到s并遍历它们,然后在每个你可以使用next_element得到;像这样:doc=Nokogiri::HTML(
我有以下不起作用的代码:=form_for(resource,:as=>resource_name,:url=>session_path(resource_name),:html=>{:class=>"well"})do|f|=f.label:email=f.email_field:email=f.label:password=f.password_field:password-ifdevise_mapping.rememberable?%p=f.label:remember_me,:class=>"checkbox"=f.check_box:remember_me,:class=>"
我有这个:AccountSummary我想单击该链接,但在使用link_to时出现错误。我试过:bot.click(page.link_with(:href=>/menu_home/))bot.click(page.link_with(:class=>'top_level_active'))bot.click(page.link_with(:href=>/AccountSummary/))我得到的错误是:NoMethodError:nil:NilClass的未定义方法“[]” 最佳答案 那是一个javascript链接。Mechan
我正在遍历数组中的一组标签名称,我想使用构建器打印每个标签名称,而不是求助于“我认为:builder=Nokogiri::XML::Builder.newdo|xml|fortagintagsxml.tag!tag,somevalendend会这样做,但它只是创建名称为“tag”的标签,并将标签变量作为元素的文本值。有人可以帮忙吗?这个看起来应该比较简单,我刚刚在搜索引擎上找不到答案。我可能没有以正确的方式提问。 最佳答案 尝试以下操作。如果我没记错的话,我添加了一个根节点,因为Nokogiri需要一个。builder=Nokogi
我想使用部分字符串搜索数组,然后获取找到该字符串的索引。例如:a=["Thisisline1","Wehaveline2here","andfinallyline3","potato"]a.index("potato")#thisreturns3a.index("Wehave")#thisreturnsnil使用a.grep将返回完整的字符串,使用a.any?将返回正确的true/false语句,但都不会返回匹配的索引找到了,或者至少我不知道该怎么做。我正在编写一段代码,该代码读取文件、查找特定header,然后返回该header的索引,以便它可以将其用作future搜索的偏移量。如果