2011-12-21 219 views
1

我對編寫Google地圖代碼很陌生,對JavaScript和PHP知之甚少。但是,我設法編寫連接到我的SQL DB的PHP文件並輸出XML文件。雖然,我無法弄清楚如何創建與XML文件相關的多個標記,而XML文件先前已經進行了地理編碼的緯度/經度座標。在Google Maps API V3中繪製標記

我知道創建市場函數(?)用於在地圖上創建市場,但我不知道如何告訴函數遍歷生成的XML文件,然後顯示標記。我想我也想限制基於瓦片的標記顯示,因爲我想要顯示的所有對象都在20英里半徑範圍內。

請指點我正確的方向,請。我不明白代碼的邏輯,至少有一些。指向我的正確文章,以及如何將所有代碼和平共處。如創建標記,通過網格過濾等。我知道它可以完成!

謝謝。

+1

該文檔包含示例。 http://code.google.com/apis/maps/documentation/javascript/overlays.html#Markers你有多遠?你有沒有試過這個例子? – Eduardo 2011-12-21 16:06:41

+0

現在我只有一個以我想要的lat/lng爲中心的地圖。和我想要的縮放級別。我有一個php文件,將有效的xml與我的所有列(如SIC,Zip,lat,lng,地址,名稱等)放在一起。但是,我不太瞭解Javascript以編寫代碼來遍歷XML文件來抓取lat/lng信息以便將其繪製在地圖上。我想我明白它會如何工作,而不是如何實施它。 – user1001259 2011-12-21 16:16:21

回答

0

有很多方法可以用XML數據創建標記。

  1. 編寫PHP功能,當你加載網頁時調用它輸出的緯度/經度和繪製標記和創建自己的工具提示等,你可以以任何格式發送數據例如需要的其他數據XML,JSON到fe。 Javascript目前無法從前端讀取文件(Chrome有一個API,但我不推薦使用它,服務器端的方法更安全。)

  2. 要放大一個區域,其中包含所有標記和沒有看到gmaps的整個WORLD_VIEW也有很多方法。我知道的一個是創建一個LatLngBounds對象,它基本上就像一個矩形,它只包含所有的標記。然後在GoogleMaps API中,您將找到一種名爲fitBounds的方法,它是Map類的一種方法,它將適合此對象,該對象將在地圖div上的所有標記周圍創建邊界。

我可以通過一個小提琴給你,如果你想讓我知道。

1

首先,您需要了解如何解析XML數據,以便您可以將其用於Maps API。爲此我推薦使用jQuery來做到這一點。這裏有一篇基本的文章讓你開始閱讀XML與jQuery:http://think2loud.com/224-reading-xml-with-jquery/

然後通過Google Maps documentation工作,有很好的例子處理標記。

我想,我想限制基於瓷磚的 以及標記的表現,因爲所有我想要顯示的對象是20英里 半徑範圍內。

我不確切地知道你在這裏要求什麼。你不能根據我所知的基於地圖塊的過濾器。您可以顯示特定點的X英里內的標記。一個簡單的方法來做它只是找到一個特定的邊界框與緯度和經度在特定點X度內的座標。如果你這樣做,我會建議在服務器端做。下面是過濾大約15英里(article context here)內的位置的SQL查詢:

SELECT Address, SQRT(POWER(Latitude - @Latitude, 2) + POWER(Longitude - @Longitude, 2)) * 62.1371192 AS DistanceFromAddress 
FROM Stores 
WHERE ABS(Latitude - @Latitude) < 0.25 AND ABS(Longitude - @Longitude) < 0.25 
ORDER BY DistanceFromAddress 

一個更好的辦法來做到這一點是使用Haversine formula來確定一個點是否在範圍之內。你可以自己硬編碼:example或使用Google's Geometry library(它使用haversine公式)來實現這一點。

0

我也在使用Google Maps API來顯示標記,但是使用JSON。我發現following關於使用XML帶標記:

// Iterate through the rows, printing XML nodes for each 
while ($row = @mysql_fetch_assoc($result)){ 
    // ADD TO XML DOCUMENT NODE 
    echo '<marker '; 
    echo 'name="' . parseToXML($row['name']) . '" '; 
    echo 'address="' . parseToXML($row['address']) . '" '; 
    echo 'lat="' . $row['lat'] . '" '; 
    echo 'lng="' . $row['lng'] . '" '; 
    echo 'type="' . $row['type'] . '" '; 
    echo '/>'; 
} 

而且使用XML VS這個API其他交通工具的好discussion