① 如何在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);
}