내 컨트롤을 페이지 중앙에 배치하는 방법을 알아 내려고하고 있습니다. 하지만 "BOTTOM_CENTER"를 사용하면 div의 왼쪽 끝을지도의 가운데에 맞 춥니 다. div의 중심이지도의 아래쪽 중앙에 있도록이 값을 상쇄하고 싶습니다. 몇 시간 동안 검색을 해본 결과 아무 정보도 찾지 못했습니다 ..Google지도 맞춤 컨트롤 위치 지정
아무에게도이 작업을 수행하는 방법을 알고 있거나 리소스를 좀 더 잘 설명 할 수 있습니까?
감사합니다! 즉 너무했을 아아
아래는, 아니 나는 당신이 구글 API의 버그를 발견 한 거라고 생각이있는 동안! 조금 들어 Converting LatLng/Pixel Coordinate Control
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>LatLng Coordinates Control</title>
<style type="text/css">
#map {
width: 800px;
height: 600px;
}
#latlng-control {
background: #ffc;
border: 1px solid #676767;
font-family: arial, helvetica, sans-serif;
font-size: 0.7em;
padding: 2px 4px;
position: absolute;
}
</style>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">
function degToDms(dec) {
var deg = Math.floor(Math.abs(dec));
var min = Math.floor((Math.abs(dec)-deg)*60);
var sec = (Math.round((((Math.abs(dec) - deg) - (min/60)) * 60 * 60) * 100)/100) ;
var len = String(deg).length
deg = Array(3 + 1 - len).join('0') + deg;
var len = String(min).length
min = Array(2 + 1 - len).join('0') + min;
var len = String(sec).length
sec = Array(5 + 1 - len).join('0') + sec;
deg = dec < 0 ? '-' + deg : deg;
var dec_min = (min*1.0 + (sec/60.0));
var dms = deg + '° ' + dec_min.toFixed(3) + '\'';
return dms;
}
function LatLngControl(map) {
this.node_ = this.createHtmlNode_();
map.controls[google.maps.ControlPosition.BOTTOM_CENTER].push(this.node_);
this.setMap(map);
this.set('visible', false);
}
LatLngControl.prototype = new google.maps.OverlayView();
LatLngControl.prototype.draw = function() {};
LatLngControl.prototype.createHtmlNode_ = function() {
var divNode = document.createElement('div');
divNode.id = 'latlng-control';
divNode.index = 100;
return divNode;
};
LatLngControl.prototype.visible_changed = function() {
this.node_.style.display = this.get('visible') ? '' : 'none';
//this.node_.style.floatRight = '100px';
};
LatLngControl.prototype.updatePosition = function(latLng) {
var dmsLat = degToDms(latLng.lat().toFixed(4));
var dmsLon = degToDms(latLng.lng().toFixed(4));
this.node_.innerHTML = 'Mouse Position: ' + dmsLat + ', ' + dmsLon;
};
function init() {
var centerLatLng = new google.maps.LatLng(37.748582,-122.418411);
var map = new google.maps.Map(document.getElementById('map'), {
'zoom': 10,
'center': centerLatLng,
'mapTypeId': google.maps.MapTypeId.ROADMAP
});
var latLngControl = new LatLngControl(map);
google.maps.event.addListener(map, 'mouseover', function(mEvent) {
latLngControl.set('visible', true);
});
google.maps.event.addListener(map, 'mouseout', function(mEvent) {
latLngControl.set('visible', false);
});
google.maps.event.addListener(map, 'mousemove', function(mEvent) {
latLngControl.updatePosition(mEvent.latLng);
});
}
google.maps.event.addDomListener(window, 'load', init);
</script>
</head>
<body>
<h2>LatLng Coordinate Control</h2>
<div id="map"></div>
</body>
</html>
고마워요! 하루 종일 여기에서 꼼짝 않고 바라보고 있었고, 지금 당신의 설명으로 나는 전에 볼 수 없었던 것을 정확하게 볼 수 있습니다! 나는 그 상자가 정적 인 크기로 패닝 (panning) 할 때 표시되지 않도록 조금 더 작업 할 것입니다. 그것은 그것의 목적이 지금과 같은 방식으로 작용합니다. 마치 완벽한 때까지 땜장이처럼 .. :) 다시 한번 감사드립니다! – Dennis
당신은 환영합니다. 그것이 바로 SO입니다. 나는 삶의 큰 덩어리를 만지작 거리다 ... ;-) 잃어 버렸다. – nomaderWhat