① 如何在google地图上找到经度和纬度
Google谷歌地图上没有显示某个地址的经纬度,实际上,通过浏览器可以找到在谷歌地图上任意地点的经度和纬度。
第一种方法:
1、打开Google地图,在上面寻找一个地址。
2、移动地图,让这个地址正好处于地图的正中心位置。
3、当您想寻找坐标位置已经处于地图的中心位置的时候,复制以下代码到你的电脑浏览器地址栏:
javascript:void(prompt('',gApplication.getMap().getCenter()));
你将得到一个弹出式的坐标,这个坐标就是你需要找的经度和纬度,如下图所示。
第二种方法:
鼠标点击Google地图界面上右键 “这儿是什么?”,就可以直接在地址栏看到当前位置的经纬度了。
② 如何调用fromLatLngToDivPixel在谷歌地图API V3
首先声明的子类OverlayView像这样:function CanvasProjectionOverlay() {}
CanvasProjectionOverlay.prototype = new google.maps.OverlayView();
CanvasProjectionOverlay.prototype.constructor = CanvasProjectionOverlay;
CanvasProjectionOverlay.prototype.onAdd = function(){};
CanvasProjectionOverlay.prototype.draw = function(){};
CanvasProjectionOverlay.prototype.onRemove = function(){};
然后其他人在你的代码中实例化的地图,你也实例化这个OverlayView并设置它的地图,如下所示:var map = new google.maps.Map(document.getElementById('google-map'), mapOptions);
// Add canvas projection overlay so we can use the LatLng to pixel converter
var canvasProjectionOverlay = new CanvasProjectionOverlay();
canvasProjectionOverlay.setMap(map);
然后,当你需要fromLatLngToContainerPixel CodeGo.net,你只要做到这一点:canvasProjectionOverlay.getProjection().fromLatLngToContainerPixel(myLatLng);
请注意,MapCanvasProjection对象将只提供一次draw()叫,这是以前的地图的idle,我建议创建一个布尔“mapInitialized”的旗帜,将其设置为true的优先个地图上idle回调。然后你需要做什么后,才做。
3.var map;
// Create your map
MyOverlay.prototype = new google.maps.OverlayView();
MyOverlay.prototype.onAdd = function() { }
MyOverlay.prototype.onRemove = function() { }
MyOverlay.prototype.draw = function() { }
function MyOverlay(map) { this.setMap(map); }
var overlay = new MyOverlay(map);
var projection = overlay.getProjection();
4. 为了得到一个MapCanvasProjection你可以从OverlayView派生一个类并调用getProjection()方法,该方法返回一个MapCanvasProjection类型 onAdd(),平局()和OnRemove当()必须从OverlayView派生。function MyOverlay(options) {
this.setValues(options);
var div = this.div_= document.createElement('div');
div.className = "overlay";
};
// MyOverlay is derived from google.maps.OverlayView
MyOverlay.prototype = new google.maps.OverlayView;
MyOverlay.prototype.onAdd = function() {
var pane = this.getPanes().overlayLayer;
pane.appendChild(this.div_);
}
MyOverlay.prototype.onRemove = function() {
this.div_.parentNode.removeChild(this.div_);
}
MyOverlay.prototype.draw = function() {
var projection = this.getProjection();
var position = projection.fromLatLngToDivPixel(this.getMap().getCenter());
var div = this.div_;
div.style.left = position.x + 'px';
div.style.top = position.y + 'px';
div.style.display = 'block';
};
那么当你创建你的地图var OverLayMap = new MyOverlay( { map: map } );
对于V2 你应该能够从您的GMap2实例调用fromLatLngToDivPixelvar centerPoint = map.fromLatLngToDivPixel(map.getCenter());
5. 我认为最简单的方法是忽略谷歌的愿望,使我们的生活困难通过拆卸和函数,而不是增加新的,只是写你的做的事。 这里有一个版本发布其他的函数(我无法找到它现在),这工作fromLatLngToPixel: function (position) {
var scale = Math.pow(2, Map.getZoom());
var proj = Map.getProjection();
var bounds = Map.getBounds();
var nw = proj.fromLatLngToPoint(
new google.maps.LatLng(
bounds.getNorthEast().lat(),
bounds.getSouthWest().lng()
));
var point = proj.fromLatLngToPoint(position);
return new google.maps.Point(
Math.floor((point.x - nw.x) * scale),
Math.floor((point.y - nw.y) * scale));
},
现在,你可以调用它的任何和任何地方你想要的。我特别需要它的定制,它做它的工作完美。 编辑:我也写了相反的作用,fromPixelToLatLng,做完全相反。这只不过是基于优先个,与数学应用:fromPixelToLatLng: function (pixel) {
var scale = Math.pow(2, Map.getZoom());
var proj = Map.getProjection();
var bounds = Map.getBounds();
var nw = proj.fromLatLngToPoint(
new google.maps.LatLng(
bounds.getNorthEast().lat(),
bounds.getSouthWest().lng()
));
var point = new google.maps.Point();
point.x = pixel.x / scale + nw.x;
point.y = pixel.y / scale + nw.y;
return proj.fromPointToLatLng(point);
}