2013-05-11 68 views
4

可見的街頭,我試圖建立以下算法的地圖:讓所有的谷歌地圖的視

  1. 等待移動或縮放發生。
  2. 查詢在視口(範圍)中可見的所有街道。
  3. 用預定義的顏色爲每條可見的街道塗上顏色。

例子:
我想展示的企業在每個街道的號碼,或承諾在每個街頭犯罪的數量。
我有一個擁有這種信息(街道名,數據)的數據庫,但每行都沒有位置數據。
因此,在每個地圖縮放或平移後,我無法通過地理邊界矩形查詢所有地圖,使用Google自己的數據庫並通過街道名稱查詢效率會更高。

我知道如何註冊以平移和縮放事件。
我知道如何calculate the viewport coordinates
我知道如何color a single street

如何獲得在視口中可見的所有街道列表?
歡迎任何其他解決方案或體系結構。 首選解決方案不會使用Google DirectionsService或DirectionsRenderer,因爲它們減慢了地圖的速度。

+0

你好..只是跟進我的問題.. :) – toy4fun 2013-08-19 09:01:45

回答

0

我的理解是,您所問的是Google API無法提供的。多邊形內的反向地理編碼不是他們提供的服務。其他網站上有一些帖子(例如https://gis.stackexchange.com/questions/22816/how-to-reverse-geocode-without-google),參考gisgraphy.com看起來像一個非常整齊的反向地理編碼工具。

但是,這仍然不能解決你的所有街道在多邊形問題。我想認爲你唯一的選擇就是親自操作數據(Open Street Maps)並自己編寫代碼。此外 - 如果你打算爲大面積做這件事,我會採取像我在這裏推薦的方法:https://stackoverflow.com/a/18420564/1803682

我會創建我的網格元素,併爲每條街道計算它所屬的所有網格,存儲在數據庫中。然後,當您搜索多邊形時,您將計算多邊形重疊的所有網格,然後可以測試每個正方形中的道路數據子集以確定重疊。

我研究了這個,並在幾個月前放棄了類似的要求,並且仍然希望實現它。多邊形工作中的大多數點/線正在我的應用程序中創建的數據上發生(即不是街道數據),現在這是我將包含的唯一數據。我想說的是 - 我希望有人給你一個更好的答案。

更新:

對於你問我仍然相信你會需要提前使用基於OpenStreetMap的和自己的數據庫的混合某種電網分析的進行。如果你有一些時間來承擔這個項目,這個應該不會太難處理。數據庫將很大,所需的計算可能需要大量的一次/前期處理時間。至於凸顯路線/路/無論在視口中,有很多的方式來完成這項使用API​​ - 在這裏例如,我發現有用:polyline snap to road using google maps api v3

也有用:http://econym.org.uk/gmap/snap.htm

注意,單行道如果使用方向api捕捉到街道,可能會產生一些悲傷,並且您可能必須注意這一點,並糾正或反轉開始/結束點。

+0

感謝您的回答。請參閱我對上述答案的回覆。 – toy4fun 2013-09-09 15:30:26

+0

@ toy4fun更新回覆。 – Matthew 2013-09-09 15:56:47

-1

谷歌會建議使用它的Geocoding Service爲了填充您的數據庫的座標。然後,您可以使用LatLng Bounds Class方法「contains」來檢查點是否位於視口內。這種方法的優點是您只需對一次信息進行地理編碼,然後將其存儲起來,而不是在每次視口更改時發送編碼請求。

顯示這種數據的另一種有效方式可能是使用谷歌融合表。這極大地簡化了數據與地圖的集成。

+0

這可以適用於有限數據點,但不適用於多邊形內的所有道路(即視口) - 除非您正在談論的是一組非常有限的區域。 – Matthew 2013-09-05 13:31:32

+0

......並且願意將這條線外推到彼此距離內的一系列點上,這樣你會對邊緣情況下的結果感到滿意(1m,10m,1km?)你真正想要的是線/多邊形多邊形/多邊形相交,它比多邊形中的點更復雜並且不由API提供。數學!:http://en.wikipedia.org/wiki/Line-line_intersection – Matthew 2013-09-05 14:49:33

+0

感謝您的回答。我可以通過使用'DirectionsService'推斷街道積分並將其存儲在我的數據庫中。它會佔用很多空間。第二個問題是如何着色每條街道。 'DirectionsRenderer'不能很好地處理單向街道。我仍在尋找更好的解決方案。 – toy4fun 2013-09-09 15:29:03