在ImageMapType上水平重复Google地图标记 [英] Horizontal repeating Google Maps Marker on ImageMapType

查看:414
本文介绍了在ImageMapType上水平重复Google地图标记的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

 <!DOCTYPE html& 
< html>
< head>
< title>图片地图类型< / title>
< style> $ b $ h html,body,#map-canvas {
height:100%;
margin:0px;
padding:0px
}
< / style>
< script src =https://maps.googleapis.com/maps/api/js?v=3.exp>< / script>
< script>
var moonTypeOptions = {
getTileUrl:function(coord,zoom){
var bound = Math.pow(2,zoom);
return'full-out'+
'/'+ zoom +'/'+ coord.x +'/'+
(bound - coord.y - 1)+'.png ';
},
tileSize:new google.maps.Size(256,256),
maxZoom:6,
minZoom:1,
radius:1738000,
name:'Moon'
};

var moonMapType = new google.maps.ImageMapType(moonTypeOptions);


function initialize(){
var myLatlng = new google.maps.LatLng(0,0);
var mapOptions = {
center:myLatlng,
zoom:1,
streetViewControl:false,
mapTypeControlOptions:{
mapTypeIds:['moon']
}
};

var map = new google.maps.Map(document.getElementById('map-canvas'),
mapOptions);
map.mapTypes.set('moon',moonMapType);
map.setMapTypeId('moon');

var marker = new google.maps.Marker({
position:myLatlng,
map:map,
title:'Hello World!'
});
}

google.maps.event.addDomListener(window,'load',initialize);

< / script>
< / head>
< body>
< div id =map-canvas>< / div>
< / body>
< / html>

我有上述代码渲染一个19mb的自定义大16834 * 16834图像,使用gdal2tiles和gdal_translate。总之,我有所有相应的瓷砖。
上面的代码工作完美的渲染图像和不同的缩放级别。但是,当我添加标记时,它会以较低的缩放级别多次显示。我想标记不能水平重复。



有没有办法避免水平重复标记?目前,我使用的是Leaflet.js,它不会将水平地重复标记为Google地图库。



我想使用Google地图,因为它的稳定性和受欢迎程度。 / p>

我使用Ubuntu 14.04作为操作系统。

解决方案

optimized - 将标记选择为 false


<!DOCTYPE html>
<html>
  <head>
    <title>Image map types</title>
    <style>
      html, body, #map-canvas {
        height: 100%;
        margin: 0px;
        padding: 0px
      }
    </style>
    <script src="https://maps.googleapis.com/maps/api/js?v=3.exp"></script>
    <script>
var moonTypeOptions = {
  getTileUrl: function(coord, zoom) {
      var bound = Math.pow(2, zoom);
      return 'full-out' +
          '/' + zoom + '/' + coord.x + '/' +
          (bound - coord.y - 1) + '.png';
  },
  tileSize: new google.maps.Size(256, 256),
  maxZoom: 6,
  minZoom: 1,
  radius: 1738000,
  name: 'Moon'
};

var moonMapType = new google.maps.ImageMapType(moonTypeOptions);


function initialize() {
  var myLatlng = new google.maps.LatLng(0, 0);
  var mapOptions = {
    center: myLatlng,
    zoom: 1,
    streetViewControl: false,
    mapTypeControlOptions: {
      mapTypeIds: ['moon']
    }
  };

  var map = new google.maps.Map(document.getElementById('map-canvas'),
      mapOptions);
  map.mapTypes.set('moon', moonMapType);
  map.setMapTypeId('moon');

  var marker = new google.maps.Marker({
      position: myLatlng,
      map: map,
      title: 'Hello World!'
  });
}

google.maps.event.addDomListener(window, 'load', initialize);

      </script>
  </head>
  <body>
    <div id="map-canvas"></div>
  </body>
</html>

I have above code to render a custom large 16834 * 16834 image of 19 mb which is broken into tiles using gdal2tiles and gdal_translate. In short, I have all the corresponding tiles. The above code is working perfectly fine rendering image and different zoom levels. However, when I add marker, it is displayed multiple times at lower zoom level. I would like the marker not repeat itself horizontally.

Is there any way to avoid horizontal repeating markers? Currently, I'm using Leaflet.js which doesn't repeat marker horizontally as Google Maps library.

I want to use Google maps because of its stability and popularity.

I'm using Ubuntu 14.04 as OS.

解决方案

set the optimized-option of the markers to false

这篇关于在ImageMapType上水平重复Google地图标记的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆