Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 谷歌';s crawler赢得';我不懂自己的地图。如何解决?_Javascript_Google Maps_Seo_Openlayers - Fatal编程技术网

Javascript 谷歌';s crawler赢得';我不懂自己的地图。如何解决?

Javascript 谷歌';s crawler赢得';我不懂自己的地图。如何解决?,javascript,google-maps,seo,openlayers,Javascript,Google Maps,Seo,Openlayers,我发现一些奇怪的单词(这里有,图片,对不起),它们本不应该出现在我的网站上,被谷歌的爬虫当作关键词 谷歌在抓取使用谷歌地图的页面时似乎有错误,所以它将错误字符串作为重要的关键字 我使用openlayers在两个站点中显示地图。代码是这样的 <script src="http://openlayers.org/api/OpenLayers.js"></script> <script src="http://maps.google.com/maps/api/js?v=

我发现一些奇怪的单词(这里有,图片,对不起),它们本不应该出现在我的网站上,被谷歌的爬虫当作关键词

谷歌在抓取使用谷歌地图的页面时似乎有错误,所以它将错误字符串作为重要的关键字

我使用openlayers在两个站点中显示地图。代码是这样的

<script src="http://openlayers.org/api/OpenLayers.js"></script>
<script src="http://maps.google.com/maps/api/js?v=3&amp;sensor=false"></script>
<script type="text/javascript">
$(function() {
  $("#mapOuter").html('<div class="thumbnail"><div id="map" style="height:250px"></div></div>')
  map = new OpenLayers.Map("map")
  //map.addLayer( new OpenLayers.Layer.OSM   ("OpenStreeetMap") )
  map.addLayer( new OpenLayers.Layer.Google("Google v3"     ) )
  vectors = new OpenLayers.Layer.Vector("vector")
  map.addLayer( vectors )

  map.addControl( new OpenLayers.Control.LayerSwitcher() );
  map.addControl( new OpenLayers.Control.Navigation({documentDrag:true}) );
  map.addControl( new OpenLayers.Control.PanZoom() );
  var in_options = {
      'internalProjection': map.baseLayer.projection,
      'externalProjection': new OpenLayers.Projection("EPSG:4326")
  };

    var lon=-57.954900
    var lat=-34.917000

  map.setCenter(new OpenLayers.LonLat(lon, lat) // Center of the map
    .transform(
      new OpenLayers.Projection("EPSG:4326"), // transform from WGS 1984
      new OpenLayers.Projection("EPSG:900913") // to Spherical Mercator Projection
    ), 15 // Zoom level
  )

});
</script>

$(函数(){
$(“#mapOuter”).html(“”)
map=新的OpenLayers.map(“map”)
//map.addLayer(新的OpenLayers.Layer.OSM(“openstreetmap”))
addLayer(新的OpenLayers.Layer.Google(“googlev3”))
向量=新的OpenLayers.Layer.Vector(“向量”)
map.addLayer(向量)
addControl(新的OpenLayers.Control.LayerSwitcher());
addControl(新的OpenLayers.Control.Navigation({documentDrag:true}));
addControl(新的OpenLayers.Control.PanZoom());
选项中的变量={
“内部投影”:map.baseLayer.projection,
“外部投影”:新的OpenLayers.Projection(“EPSG:4326”)
};
变量lon=-57.954900
var lat=-34.917000
map.setCenter(新OpenLayers.LonLat(lon,lat)//地图的中心
.变换(
新OpenLayers.Projection(“EPSG:4326”),//从WGS 1984转换而来
新OpenLayers.Projection(“EPSG:900913”)//到球形墨卡托投影
),15//缩放级别
)
});
我怎样才能修复这个“错误”,让谷歌爬虫可以从我的网站上获取好的内容

谷歌搜索奖金(显示错误已编入索引)

更新,“解决方案”已应用:

在我的站点中,每个页面都有一张不同的地图,我最终将所有地图转换为图像,并且只保留一张交互式地图,在那里我确实需要用户与坐标和地图进行交互。我使用的解决方案引导我创建和开放源代码。希望它能帮助别人

该网站得到了一些改进:

  • 摆脱了谷歌网站管理员中的这些尴尬词语
  • 更相关的SEO使用带有“alt”HTMLIMG属性的静态图像,而不是“unindex”js映射
  • 更快的页面加载(摆脱了所有映射库和磁贴加载)
  • 更快的js性能(客户端处理的js更少)
  • 改进的用户体验:滚动页面导致地图缩放,而不是实际滚动(您可以认为这可以通过禁用地图滚动缩放来解决,但这会导致用户希望在滚动时缩放地图,这两种方法都是有效的)
在缺点方面,我发现:

  • 减少用户交互(无聊页面)
  • 地图上的上下文较少(地图信息较少)
这两件事可以在用户单击地图img时“修复”加载地图。坏的一面是,如果用户无意中单击map img,则map加载可能被视为用户的意外行为

Edit2

我用这个做了一个开源项目。退房

1)也许在
标签中设置您的标签将取代以下内容:

<meta name="description" content="This is an example of a meta description. This will often show up in search results.">

2) 如果meta标记不起作用,我还建议这可能是因为
中呈现的第一件事(或者,通过屏幕截图的外观尝试)是在加载任何其他内容之前显示地图

例如,如果您在
地图中的
之前放置一个
标签,其中包含一些有关您网站的介绍内容,则可以避免这种情况。然而,我不是100%肯定这一点,你将不得不测试,并看到结果(让我们张贴)


如果您计划这样做,并且希望a)谷歌爬虫仍能抓起它,b)希望对查看者隐藏实际的单词块本身(
style=“display:none;”“
style=“position:absolute;left:-9999px;”“
),请自行决定()

也许您可以添加一些更具体的元标记,例如

<meta name="geo.region" content="US-WA" />



<meta name="geo.placename" content="Snohomish" />



<meta name="geo.position" content="-57.954900;-34.917000" />


此外,在Google网站管理员中添加Matt Rowles meta description和一些单词过滤器。

此答案不会帮助您删除已爬网页面的单词,但可能会阻止它们在下一次爬网后被添加

因为您的问题可能与爬虫程序无法加载有效地图有关。不清楚为什么不能。地图提供商可能正在阻止谷歌机器人

无论如何,如果不是太难,我会看看这里:

创建用户代理列表,如下所示:

我将以“谷歌机器人”为例,但您应该使用一个列表,列出每个被阻止的用户代理

if (navigator.userAgent !== 'Googlebot') {
   // load the map and other stuff
} else {
   // show a picture where the map should be or do nothing.
}
GoogleBot执行JS,因此在GoogleBot无法加载的情况下,它应该能够防止错误

您可以做的一件事是将浏览器的useragent更改为“Googlebot”并加载页面。如果地图提供程序阻止使用此用户代理的任何浏览器,您应该确切地看到googlebot看到的内容。另一个问题是googlebot可能还有一些超时,以防止加载太多数据,并且它不会加载图像


如果问题真的存在于地图中,添加防护可能有助于阻止google bot实际加载地图。

如果您尝试添加蜘蛛元标记,那么在头部部分尝试一下会有很大帮助

<meta name="robots" content="index, follow">

蜘蛛现在将索引您的整个网站,也将不仅索引您网站的第一个网页,而且索引您的所有其他网页

也试着让你的描述更独特!更强大,但不要过量使用这些钥匙


谢谢

不幸的是我也看到了很多

我的假设是googlebot不会完全评估页面上的所有js代码,但也会使用启发式。因此没有图像(被索引)。基于这一假设,我做了以下工作:

  • 创建一个具有“随机”ID(用于地图)和style=“display:none;”的div

  • 创建一个noscript标记,其中包含一个img标记w