簡體   English   中英

在Google Maps API V3中繪制標記

[英]Plotting Markers in Google Maps API V3

我剛開始編寫Google Maps代碼,對Javascript和PHP的了解有限。 但是,我設法編寫了連接到SQL DB並輸出XML文件的PHP文件。 雖然,我無法弄清楚如何創建與XML文件相關的多個標記,該標記以前已對lat / lng坐標進行了地理編碼。

我知道創建市場函數(?)用於在地圖上創建市場,但是我不知道如何告訴該函數迭代生成的XML文件,然后顯示標記。 我想我也想限制基於圖塊的標記顯示,因為我要顯示的所有對象都在20英里半徑范圍內。

請指出正確的方向。 我不了解代碼的邏輯,至少其中一些。 向我介紹適當的文章,以及如何使所有代碼統一在一起。 例如創建標記,通過網格過濾等。我知道可以做到!

謝謝。

首先,您需要學習如何解析XML數據,以便將其與Maps API結合使用。 為此,我建議使用jQuery來做到這一點。 這是一篇基礎文章,可幫助您開始使用jQuery閱讀XML: http : //think2loud.com/224-reading-xml-with-jquery/

然后瀏覽Google Maps文檔 ,其中有關於處理標記的出色示例。

我想我也想限制基於圖塊的標記顯示,因為我要顯示的所有對象都在20英里半徑范圍內。

我不確切知道您在這里要什么。 據我所知,您無法根據地圖圖塊進行過濾。 您可以顯示特定點X英里內的標記。 最簡單的方法就是找到與特定邊界框相對的坐標,該坐標框的緯度和經度距特定點X度以內。 如果您這樣做,我建議您在服務器端進行。 這是一個SQL查詢,可過濾大約15英里內的位置( 此處為文章上下文 ):

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公式確定點是否在范圍內。 您可以自己對此進行硬編碼: 示例或使用Google的Geometry庫 (使用Haversine公式)來完成此操作。

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

  1. 編寫一個php函數,該函數在您加載頁面時會被調用,並輸出lat / lng和其他數據以繪制標記並創建其工具提示等。您可以將任何格式的數據(例如XML,JSON)發送給fe。 到目前為止,JavaScript無法從前端讀取文件(Chrome具有API,但我不建議您這樣做,服務器端方法更安全。)

  2. 要縮放到具有所有標記的區域而看不到gmap的整個WORLD_VIEW,也有很多方法。 我知道的一個方法是創建一個LatLngBounds對象,該對象基本上像一個矩形,並且只包含所有標記。 然后,在GoogleMaps API中,您將找到一個名為fitBounds的方法,該方法是Map類的方法,該方法將適合該對象,該對象在地圖div上的所有標記周圍創建邊界。

如果您願意,我可以為您提供代碼,讓我知道。

我還使用Google Maps API顯示標記-但是使用JSON。 我發現以下有關將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 '/>';
}

對於通過此API使用XML與其他傳輸方式也進行了很好的討論

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM