我在Google地圖上工作,並希望實現一項功能,用戶可以使用他/她的鼠標在地圖上選擇區域來繪製框/矩形(例如在窗口中選擇多個文件)。選擇後,我想獲得該地區的所有標記。我一直在瀏覽谷歌地圖API和搜索,但我無法找到解決方案。我嘗試使用jQuery Selectable進行選擇,但它返回的是一串div,我無法確定是否選擇了任何標記。谷歌地圖中的框/矩形繪製選擇
11
A
回答
9
我找到了一個庫keydragzoom(http://google-maps-utility-library-v3.googlecode.com/svn/tags/keydragzoom/1.0/docs/reference.html),並用它在頁面上繪製一個矩形。
之後,我編輯圖書館並停止縮放選定區域,而是使其在'dragend'事件中返回正確的座標。然後,我手動循環瀏覽地圖上的所有標記,以查找特定區域內的標記。圖書館沒有給我適當的協調,我做了以下修改。
改變了DragZoom功能
var prj = null;
function DragZoom(map, opt_zoomOpts) {
var ov = new google.maps.OverlayView();
var me = this;
ov.onAdd = function() {
me.init_(map, opt_zoomOpts);
};
ov.draw = function() {
};
ov.onRemove = function() {
};
ov.setMap(map);
this.prjov_ = ov;
google.maps.event.addListener(map, 'idle', function() {
prj = ov.getProjection();
});
}
和DragZoom.prototype.onMouseUp_功能
DragZoom.prototype.onMouseUp_ = function (e) {
this.mouseDown_ = false;
if (this.dragging_) {
var left = Math.min(this.startPt_.x, this.endPt_.x);
var top = Math.min(this.startPt_.y, this.endPt_.y);
var width = Math.abs(this.startPt_.x - this.endPt_.x);
var height = Math.abs(this.startPt_.y - this.endPt_.y);
var points={
top: top,
left: left,
bottom: top + height,
right: left + width
};
var prj = this.prjov_.getProjection();
// 2009-05-29: since V3 does not have fromContainerPixel,
//needs find offset here
var containerPos = getElementPosition(this.map_.getDiv());
var mapPanePos = getElementPosition(this.prjov_.getPanes().mapPane);
left = left + (containerPos.left - mapPanePos.left);
top = top + (containerPos.top - mapPanePos.top);
var sw = prj.fromDivPixelToLatLng(new google.maps.Point(left, top + height));
var ne = prj.fromDivPixelToLatLng(new google.maps.Point(left + width, top));
var bnds = new google.maps.LatLngBounds(sw, ne);
//this.map_.fitBounds(bnds);
this.dragging_ = false;
this.boxDiv_.style.display = 'none';
/**
* This event is fired when the drag operation ends.
* Note that the event is not fired if the hot key is released before the drag operation ends.
* @name DragZoom#dragend
* @param {GLatLngBounds} newBounds
* @event
*/
google.maps.event.trigger(this, 'dragend', points);
}
};
+0
它如何執行10k標記? –
+0
我如何攔截我的代碼中的'點'?我嘗試過使用google.maps.event.addListener(map,'dragend',function(){...}),但是當我拖動移動地圖而不是移動拖動來創建框時,它攔截。 –
相關問題
- 1. 如何使用谷歌地圖API在谷歌地圖上繪製矩形
- 2. 谷歌地圖V3 - 繪製帶有infowindows的矩形
- 3. 只允許繪製矩形 - 谷歌地圖API
- 4. 谷歌地圖中的動態矩形
- 5. 繪製在谷歌地圖
- 6. 繪製在谷歌,地圖
- 7. 谷歌地圖繪製
- 8. 谷歌地圖API V3矩形索引
- 9. 在反應谷歌地圖周圍繪製矩形而不是使用'圖標'
- 10. 我如何捕獲繪製的圖形上的谷歌地圖
- 11. 谷歌地圖V2中的多邊形上繪製網格
- 12. 矩形通過谷歌地圖的DrawingManager繪製不會觸發mousemove事件
- 13. 自定義繪製選擇矩形
- 14. QT-從組合框中選擇顏色並繪製矩形
- 15. 在多邊形中繪製多個洞 - 谷歌地圖api
- 16. Android。谷歌地圖。如何從數組中繪製多邊形
- 17. 在圖框上繪製矩形 - 如何限制矩形區域?
- 18. c#窗體窗體 - 從圖片框中選擇繪製的矩形
- 19. 谷歌地圖:繪製周圍隨機位置的多邊形
- 20. 的Android疊加在谷歌地圖繪製形狀
- 21. 在地圖上繪製矩形
- 22. 在Google地圖上繪製矩形
- 23. 谷歌地圖中選擇位置
- 24. 限制用戶到一個矩形谷歌地圖API
- 25. 在谷歌地圖上繪製凸包
- 26. 谷歌地圖繪製圈從
- 27. 谷歌地圖V3:繪製庫
- 28. 谷歌地圖JavaScript v3 - 繪製SVG線
- 29. 谷歌地圖:繪製優化路徑
- 30. 繪製多個路由谷歌地圖
爲谷歌專門的地圖,將需要一些工具......我想簡要地搜索「谷歌映射矩形選擇「,但沒有成功。你找到什麼了嗎? – TMS
我找到了一個庫,允許您繪製一個矩形(同時按住Shift鍵)。然後放大該區域。我已將其更改爲不放大,而是返回所選區域的地理座標。然後我遍歷地圖上的所有標記並選擇那些位於該地區的標記。庫的名稱是「keydragzoom」 –
這是一個嗎? http://google-maps-utility-library-v3.googlecode.com/svn/tags/keydragzoom/1.0/docs/reference.html – TMS