我需要做的事很簡單 - 我有一個CCK字段叫做Number的內容類型(令人驚訝的是,它包含一個十進制數),而且這個內容類型也有一個位置(每個節點總是1個位置)。現在不是典型GMAP標誌,我需要在GMAP顯示來自CCK場數那些數字,像這樣:如何在Drupal上創建GMap標記管理器?
任何想法,該怎麼辦呢?我簡要介紹了GMap模塊中包含的標記管理器,我可以創建自己的,但唯一不知道的是如何將節點數據(CCK字段內容)傳遞到標記管理器。
任何幫助將不勝感激。
我需要做的事很簡單 - 我有一個CCK字段叫做Number的內容類型(令人驚訝的是,它包含一個十進制數),而且這個內容類型也有一個位置(每個節點總是1個位置)。現在不是典型GMAP標誌,我需要在GMAP顯示來自CCK場數那些數字,像這樣:如何在Drupal上創建GMap標記管理器?
任何想法,該怎麼辦呢?我簡要介紹了GMap模塊中包含的標記管理器,我可以創建自己的,但唯一不知道的是如何將節點數據(CCK字段內容)傳遞到標記管理器。
任何幫助將不勝感激。
可能你應該動態地創建標記imageMagick的幫助,並將其附加到節點?
雖然在gmap模塊中可能有一個簡單的解決方案(我想這就是你所指的),但我使用的解決方案面臨類似的問題,是從Drupal(7)獲得字段值, (經度和緯度),然後使用Google Googles JavaScript API放置自定義標記。
編輯位置和gmap模塊有點太耗時。
自定義標記可以通過谷歌的API的addMarker功能被添加:http://code.google.com/apis/maps/documentation/javascript/overlays.html#ComplexIcons
示例代碼如下所示:
<?php
drupal_add_js('http://maps.googleapis.com/maps/api/js?sensor=false');
$locationID = $node->field_mylocationField_location['und'][0]['lid'] ;
$theLocation = location_load_location($locationID);
drupal_add_js('jQuery(document).ready(function(){
initialize();
});', 'inline');
?>
<script type="text/javascript">
function initialize() {
var latlng = new google.maps.LatLng(<?php print($theLocation['latitude']) ?>, <?php print($theLocation['longitude'])?>);
var myOptions = {
zoom: 12,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById("map_canvas"),
myOptions);
}
</script>
在下面的例子中,我假設你的號碼去100,101,110,200.這個簡單的示例序列使我可以說明解決方案的所有方面。
您可以利用GMap支持sequences of custom markers的事實。
你可以因此創建一個自定義標記文件夾,該文件夾中,創建一個.ini文件看起來是這樣的:
; Defaults
[defaults]
; Note: An empty shadow property will break IE.
; Leave it commented out if you aren't supplying an image.
;shadow = ""
anchorX = 16
anchorY = 51
infoX = 24
infoY = 4
; Marker sets
[numbermarkers]
name = "Number markers"
sequence = "100.png,101.png,110.png,200.png"
; Files
然後創建相關的PNG文件(可以使用其他類型的圖像)的100.png,101.png等按GMap設置頁面上的重新生成按鈕使其重新讀取ini文件,以便顯示新的標記類型。
在您的GMap設置中,選擇您的標記類型爲「數字標記」(或您在ini文件中使用的任何名稱)。
的標記將現在爲了應用到你的電話號碼類型,因此請確保您排序的數字(例如在視圖設置,如果您使用的是視圖)由你提到的十進制數場。
由於您的節點以數字順序添加到地圖中,並且標記順序中的圖像也按數字順序排列,所以您應該會發現每個標記都有正確的標記!
更新在未來新的Numbers
如果你要增加號碼105,例如,你需要:
sequence
行添加105.png,以數字順序保留條目(即在101.png和110.png之間添加105.png),drush cc all
是你的朋友)。你可能會遇到
在我遇到的問題,標記序列在GMAP中的錯誤,說明here和here。由於這個bug,只有序列中的一個項目被使用。
測試此問題的簡單方法是使用GMap的內置「星期」標記類型,並檢查它們是否都顯示爲「Sun」!
我工作圍繞這在使用此代碼創建一個自定義模塊:
function mymodule_gmap($op, &$map)
{
if ($op == 'pre_theme_map') {
if (($map != null) && (array_key_exists('markers', $map)))
{
for ($count = 0; $count < sizeof($map['markers']); $count++) {
$map['markers'][$count]['offset'] = strval($count);
}
}
}
}
此手動設置「偏移」字段,以確保它是正確的。
您可能可以修改此代碼以使添加新數字的過程更簡單,但我不確定 - 我會讓您進行調查!
標記文件夾
我建議您在自己的模塊創建自定義的標記,而不是將它們放入GMAP的目錄,將其添加到GMAP使升級困難。
更多關於如何做到這一點,請參閱:
但我怎麼在GMAP將這些圖像(標記)? – petiar