2010年8月16日 星期一

google map api

原來把Google map放在網頁上還挺容易的!!
我的成果

不過我的目的不只是要放一個點,還要放很多點,而且要從資料庫內抓點來放!!

<script type="text/javascript">
//<![CDATA[
var map = new GMap(document.getElementById("mymap"));

//設定要顯示的控制項
map.addControl(new GLargeMapControl());
map.addControl(new GMapTypeControl());
map.addMapType(G_PHYSICAL_MAP);

//決定你 Google 地圖的中心點位置(緯度, 經度)和縮放大小以及預設的地圖模式
map.setCenter(new GLatLng(23.753611, 120.3), 8, G_HYBRID_MAP);
</script>

//已經將資料放在陣列 $loc 中
//因為資料庫的經緯度資料是度分秒的,所以要先將他們轉成二度分帶
//先用php做個迴圈讀資料,然後再用javascript將每一個點點上去

<?php
for ($i=0;$i<count($loc);$i++){
$loc[$i]['Y']=$loc[$i]['DegY']+$loc[$i]['MinY']/60+$loc[$i]['SecY']/3600;
$loc[$i]['X']=$loc[$i]['DegX']+$loc[$i]['MinX']/60+$loc[$i]['SecX']/3600;
?>

<script type="text/javascript">
//標示在 Google 地圖上的經緯度
var point<?php echo $i;?> = new GLatLng(<?php echo $loc[$i]['Y'];?>, <?php echo $loc[$i]['X'];?>);
var marker<?php echo $i;?> = new GMarker(point<?php echo $i;?>);
map.addOverlay(marker<?php echo $i;?>);

//在地圖上放置標點說明,可以放文字、連結、圖,就如同一班html的寫法
var html<?php echo $i;?> = "<?php echo $i;?>";


GEvent.addListener(marker<?php echo $i;?>, "click", function() {
    marker<?php echo $i;?>.openInfoWindowHtml(html<?php echo $i;?>);
});
map.addOverlay(marker<?php echo $i;?>);

//]]>
</script>
<?php };?>

這樣就可以在同一張圖上顯示很多點了,而且還可以有內容說明喔

參考資料:
Google Map 的中文製作簡介
Google Maps API 實作範例

2010年3月4日 星期四

自動完成 autocomplete

最近花了一段時間在搞這個東西。就是希望在表單的文字框輸入文字時,可以連結到資料庫尋找相關的字詞以提供使用者參考,像是在google搜尋時,輸入一個a,就會出現建議選單。

因為對寫程式做網頁還很粗淺,很多時候連要用什麼關鍵字來查詢都不確定,先是花了一段時間瞭解我要的功能叫『自動完成』,又花了一段時間搞懂該如何在網站上使用。

這是一個jQuery的套件,jQuery是JavaScript的函式庫。話說我連JavaScript都還看不懂了,一開始時壓根搞不清楚要如何使用這個別人寫好的套件...。買了兩本書來研究,終於還是被我給研究成功了。哈哈。雖然只是會用,內部的東西還是不太清楚,但能用就好了嗎是不。

我是下載這個網站的Autocomplete套件。
http://bassistance.de/jquery-plugins/jquery-plugin-autocomplete/
內含有的功能很多,我僅先選取最基本的部份來做。

要使用的檔案有
1.jquery.js - 在lib資料夾下。這是jQuery的基本檔,要用套件前必須先載入這個檔。
2.jquery.autocomplete.js - 自動完成的套件。包含自動完成的基本功能。
3.jquery.autocomplete.css - 為建議選單的樣式。

先載入以上檔案。

<
head>...
<link href="../css/jquery.autocomplete.css" rel="stylesheet" type="text/css" />
<script src="../js/jquery.js" type="text/javascript"></script>
<script src="../js/jquery.autocomplete.js" type="text/javascript"></script>
...
</head>

在body內建立表單文字框。
<input type="text" name="ref[author]" id="author" class="author_choice" />

在文字框下加入自動完成的程式碼。
<script type="text/javascript">
$(function(){
$("#author").focus().autocomplete("authorlist.php", {
//author為文字框的id。資料來源為authorlist.php檔
//有許多參數可以設定,以下列出可能會用到的:
minChars:0,
//當輸入多少字元時出現建議選單,若設定為0,則當文字框被點選而尚未有文字輸入時,也會有建議選單出現
width: 200,
//建議選單的寬度
selectFirst: true,
//自動選取建議選單的第一個值
scrollHeight: 300,
//設定建議選單產生捲軸 (scroll: true(預設))時可以設定建議選單的高度
autoFill: true
//自動在文字框欄位中填入建議值
});
});
</script>

在預設狀態中,建議選單一次只會出現10筆,若希望出現多一點,可至 jquery.autocomplete.js 檔案中的第一段修改。
$.fn.extend({
autocomplete: function(urlOrData, options) {
var isUrl = typeof urlOrData == "string";
options = $.extend({}, $.Autocompleter.defaults, {
url: isUrl ? urlOrData : null,
data: isUrl ? null : urlOrData,
delay: isUrl ? $.Autocompleter.defaults.delay : 10,
max: options && !options.scroll ? 10 : 150
}, options);


將10改成想要的數字即可。

前面所說的設定也可以直接在 jquery.autocomplete.js 檔案中更改預設值。

我的資料是用php連結資料庫所產生。
表單會傳送給php的是 $_GET['q'],所以要以 $_GET['q'] 為查詢參數,例如:
<?php
$param=$_GET['q'];

mysql_select_db($database_PlantName, $PlantName);
$query_author = "SELECT distinct total_sp.author FROM total_sp where author like '$param%'";
?>


而最後要將每一個值一一讀出。
<?php
$author = mysql_query($query_author, $PlantName) or die(mysql_error());
$row_author = mysql_fetch_assoc($author);
$totalRows_author = mysql_num_rows($author);

do {
    echo $row_author['author']."\n";
} while ($row_author = mysql_fetch_assoc($author));
?>

建議選單的資料載入有兩種方式,一種是像我用的以php連結資料庫的方式,另一個是直接鍵入資料的方式。因為我是用資料庫產生選單的,所以只介紹這一種,另一種方式請參考: http://jsgears.com/thread-114-1-1.html

2009年12月25日 星期五

php 讀取txt檔 自動分行

<?php
$file = fopen("test.txt", "r");

//輸出文本中所有的行,直到文件結束為止。
while(! feof($file))
{
echo fgets($file). "<br />";
}
//當讀出文件一行後,就在後面加上 <br> 讓html知道要換行
fclose($file);
?>


fopen 是開啟檔案的程式
feof 是檢測是否已到文件末尾
fgets 是讀取文字檔的程式,一次讀一行,直到 /n (分行符號)

參考資料:
PHP: 讀取檔案 fgets 和 fread 的差異
W3School: PHP feof()函數

2009年12月11日 星期五

只顯示圖片的某個部份

有些時候圖片太大,只想顯示圖片的某個部份,又不想切圖的時候,可以使用這個方法。

就在圖片的前面加入css的設定值,如
<div style ="height:50px; width:50px; overflow:hidden;">
<div style = "margin: -25px 0 0 0;">
<img src=" url/img.jpg "/>
</div>
</div>


先用一層 div 區塊來固定圖片的大小,並設定超過區塊大小的圖片即影藏,再用第二區塊來控制要顯現圖片的哪一部份,然後用margin調整圖片的位置,就可以任意顯現圖片的任一部分嚕~~

圖片超連結後有邊框!!

主要是IE的顯示會有問題, 試了好久,終於找到答案了!! 為避免忘記,趕快來PO一下。

方法非常簡單,只要在img的設定內加上 border="0" 就好嚕!!

2009年11月27日 星期五

解決phpmyadmin容量限制

幾個參考網站
MySQL 資料庫 *.sql 語法文件檔 上傳/載入 容量限制問題.
如何修改phpmyadmin 2m限制

不過這好像都不是我之前修改時找到的網頁..
但我是用修改php.ini的方法就是了..

2009年11月10日 星期二

該用那種字體呢

在做平面設計的時候,常常會為這個問題感到很困擾。在網路上發現了一篇還不錯的文章,記下來備忘。

iT自救術─英文字體的分類