javascript - Google maps bounds not working -


i trying set bounds of custom google map user cannot zoom out far (to point world map starts tile horizontally), , cannot drag far vertically avoid this issue.

i've added code set bounds, no longer seem able drag @ (uncomment bounds code recreate). want bounds world map avoid issue in screenshot above. obvious i've missed?

<!doctype html>  <html lang="en">  <head>  <meta charset="utf-8">  <title>document</title>    <style>  	#map_canvas {  		width: 100%;  		height: 650px;  	} // #map  </style>  </head>  <body>  <div id="map_canvas"></div>    <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?sensor=false"></script>  <script type="text/javascript">  function coordmaptype(tilesize) {  	this.tilesize = tilesize;  }    coordmaptype.prototype.gettile = function(coord, zoom, ownerdocument) {  		var div = ownerdocument.createelement('div');  		  	div.style.width = this.tilesize.width + 'px';  	div.style.height = this.tilesize.height + 'px';  	div.style.backgroundimage = 'url(http://www.transparenttextures.com/patterns/dark-denim-3.png)';  		  	return div;  };    var map;  var mullem = new google.maps.latlng(50.3873733,7.4952241);    function initialize() {  	var latlng = new google.maps.latlng(50.3873733,7.4952241);  	var myoptions = {  			disabledefaultui: true,  						zoom: 2  	};    	var map = new google.maps.map(document.getelementbyid("map_canvas"),  			myoptions);  	var mylatlng = new google.maps.latlng(50.3869012,  7.4950149);  	var marker = new google.maps.marker({  		position: new google.maps.latlng(40.6700, -73.9400),  							map: map,  							icon: 'images/map-marker.png',  							zindex: 999999  					});    	map.setcenter(new google.maps.latlng(51.508742,-0.120850));    	// map bounds  	/*var allowedbounds = new google.maps.latlngbounds(  			 new google.maps.latlng(83.829945, 160.839844),   			 new google.maps.latlng(-72.711903, -165.058594)  	);  	var lastvalidcenter = map.getcenter();    		google.maps.event.addlistener(map, 'center_changed', function() {  			if (allowedbounds.contains(map.getcenter())) {  					// still within valid bounds, save last valid position  					lastvalidcenter = map.getcenter();  					return;   			}    			// not valid anymore => return last valid position  			map.panto(lastvalidcenter);  	});*/  	// map bounds - end  	    		map.overlaymaptypes.insertat(0, new coordmaptype(new google.maps.size(256, 256)));  	}    	google.maps.event.adddomlistener(window, 'load', initialize);    </script>  </body>  </html>

from the documentation:

latlngbounds(sw?:latlng|latlngliteral, ne?:latlng|latlngliteral) constructs rectangle points @ south-west , north-east corners.

your bounds backwards:

var allowedbounds = new google.maps.latlngbounds(          new google.maps.latlng(83.829945, 160.839844),  // ne          new google.maps.latlng(-72.711903, -165.058594) // sw ); 

should be:

var allowedbounds = new google.maps.latlngbounds(          new google.maps.latlng(-72.711903, -165.058594), // sw          new google.maps.latlng(83.829945, 160.839844)    // ne ); 

proof of concept fiddle

code snippet:

function coordmaptype(tilesize) {    this.tilesize = tilesize;  }    coordmaptype.prototype.gettile = function(coord, zoom, ownerdocument) {    var div = ownerdocument.createelement('div');      div.style.width = this.tilesize.width + 'px';    div.style.height = this.tilesize.height + 'px';    div.style.backgroundimage = 'url(http://www.transparenttextures.com/patterns/dark-denim-3.png)';      return div;  };    var map;  var mullem = new google.maps.latlng(50.3873733, 7.4952241);    function initialize() {    var latlng = new google.maps.latlng(50.3873733, 7.4952241);    var myoptions = {      disabledefaultui: true,      zoom: 2    };      var map = new google.maps.map(document.getelementbyid("map_canvas"),      myoptions);    var mylatlng = new google.maps.latlng(50.3869012, 7.4950149);    var marker = new google.maps.marker({      position: new google.maps.latlng(40.6700, -73.9400),      map: map,      icon: 'http://maps.google.com/mapfiles/ms/micons/blue.png',      zindex: 999999    });      map.setcenter(new google.maps.latlng(51.508742, -0.120850));      // map bounds    //   latlngbounds(sw?:latlng|latlngliteral, ne?:latlng|latlngliteral)	constructs rectangle points @ south-west , north-east corners.    var allowedbounds = new google.maps.latlngbounds(      new google.maps.latlng(-72.711903, -165.058594), // sw      new google.maps.latlng(73.829945, 160.839844) // ne    );    var lastvalidcenter = map.getcenter();      google.maps.event.addlistener(map, 'center_changed', function() {      if (allowedbounds.contains(map.getcenter())) {        // still within valid bounds, save last valid position        lastvalidcenter = map.getcenter();        return;      }        // not valid anymore => return last valid position      map.panto(lastvalidcenter);    });    // map bounds - end        map.overlaymaptypes.insertat(0, new coordmaptype(new google.maps.size(256, 256)));  }    google.maps.event.adddomlistener(window, 'load', initialize);
html,  body,  #map_canvas {    width: 100%;    height: 100%;  }  // #map
<script src="https://maps.googleapis.com/maps/api/js"></script>  <div id="map_canvas"></div>


Comments

Popular posts from this blog

java - Run spring boot application error: Cannot instantiate interface org.springframework.context.ApplicationListener -

reactjs - React router and this.props.children - how to pass state to this.props.children -

Excel VBA "Microsoft Windows Common Controls 6.0 (SP6)" Location Changes -