2012年3月6日 星期二

GOOGLE MAP 的API使用(Javascript API)


GOOGLE MAP API的使用 
在網頁上內嵌GOOGLE MAP好像也不是一件很難的事情,
就先到Google map 然後指定地點,複製他產生的<iframe>標籤或是href貼到網頁程式碼就可以了。  不過我現在看的這本書是在講如何在網頁中內嵌地圖的API


(以下說明來自GOOGLE MAP API說明) 

Google Maps API 提供開發人員數種將 Google 地圖嵌入網頁的方式,可以簡單使用或再自行大幅修改。我們目前提供數種 API:
1.Google Maps Javascript API
2.Google Maps API for Flash
3.Google Static Maps API
 這些 API 可以單獨使用或加以組合,滿足您的各種需求。
 如果您是經營企業或商業網站的使用者,您可能也想瞭解 Google Maps API Premier。


可以到官網去參考他的使用方式。http://code.google.com/intl/zh-TW/apis/maps/faq.html#whatis


1.Google Maps Javascript API
就是用javascript內嵌google map API到網頁裡。
目前已經發展到第三版,並且支援行動裝置。
顧名思義第二種API for Flash就是用actionscript API 



在網頁中顯示google map API的步驟 : 


更多詳情請見 Google Maps Javascript API 第 3 版地方資訊程式庫 (實驗性)




1. 在<head>標籤裡內嵌 Maps JavaScript API -->
<script type="text/javascript" src="../jquery-1.6.2.min.js"></script>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?libraries=geometry&sensor=false"></script>
2. 建立一<div>標籤顯示google地圖  -->

<div id="mymap" style="width:500px; height:500px;"></div>


3. 設定相關選項 -->
var latlng 設定經緯度
var myOptions  設定縮放比例.中心的經緯.顯示類型
var map 定義單一地圖
4. 載入 。
詳見下方說明



說明: 
1. 在<head>標籤裡內嵌 Maps JavaScript API

根據google的說明 
 首先必須內嵌這個javascript的檔案:


<script type="text/javascript" src="http://maps.google.com/maps/api/js?libraries=geometry&sensor=true_or_false"></script>

請不要直接把這一整具貼上去html文件裡,因為你必須去設定後面的sensor
,否則會出現錯誤。






後面所帶的  sensor=true_or_false  
這裡的sensor 顧名思義就是感應器,例如GPS定位器
如果你希望在行動裝置去判斷使用者的位置
那請將sensor設定為true。還有很重要的一點,來自於 google網站說明: 
請注意,即使您的應用程式沒有使用位置感應器,您仍必須設定 sensor 參數 (在此情況下,請設定為 false)。



2. 建立一<div>標籤顯示google地圖 
<!DOCTYPE html>
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>test</title>
<script type="text/javascript" src="jquery-1.6.2.min.js"></script><!-- 匯入jquery-->
<script type="text/javascript" src="http://maps.google.com/maps/api/js?libraries=geometry&sensor=true"></script>
</head>

<body>
<!-- 測試一個區塊-->
<div style="width:500px;height:500px;background-color:green">綠綠的</div>
</body>
</html>


3. 設定相關選項 

這裡所說的相關選項只是地圖的一些設定。
我看了一下官方的說明文件,這裡的選項不外乎就是一些你必須去初始畫的東西。比方說,你必須在使用地圖的時候一開始就要去設定最初的經緯度是多少。
看一下google的地圖選項說明:
「為了初始化地圖,我們會先建立 Map options 物件以納入地圖初始化變數。我們不會建構這個物件,而會以物件實字形式建立這個物件。因為我們想將地圖中心鎖定在特定的點,所以也會建立 latlng 值來存放這個位置」

  • 緯度是 lat (變數)
  • 經度是 lng(變數)


用latlng存放這個位址就是這樣: (jquery寫法)
 <script>
 $(document).ready(function(){
  var latlng = new google.maps.Latlng(22.732709,120.287507);
 });
</script>


  • Map options物件的建立:


map option 幾個常用的就是zoom .center mapTypeld 。
zoom: 地圖顯示的比例,總共有18個 從0~17
center: 顧名思義就是地圖中心。值就是經緯度設定的 latlng
mayTypeld : 請看google說明




mapTypeId 支援的類型如下:
·         ROADMAP 顯示 Google 地圖的正常、預設 2D 地圖方塊。
·         SATELLITE 顯示圖形地圖方塊。
·         HYBRID 會顯示圖形地圖方塊和特殊圖徵 (道路、城市名稱) 地圖方塊圖層的混合圖。
·         TERRAIN 會顯示實際起伏的地圖方塊,以展現地形高度和水域圖徵 (山嶽、河流等)。



*第 3 版沒有預設地圖類型。您必須具體設定初始地圖類型


var myOptions = {
 zoom: 12,
 center: latlng,
 mapTypeId: google.maps.MapTypeId.ROADMAP
};


4. 載入 

載入應該是最容易忘記的步驟吧xd 以我來說是這樣
 前面弄了老半天狂按F5也不會有結果的xdd

載入地圖的話必須建立這個物件 (一樣貼自於Google)
google.maps.Map - 基本物件

var map = new google.maps.Map(document.getElementById("map_canvas"),
    myOptions);
此類別的物件會定義網頁上的單一地圖 (這個類別可以讓您建立實例,每個物件會在網頁上定義個別的地圖)。我們使用 JavaScript new 運算子來新增此類別的實例。
建立新的地圖實例時,您必須在網頁中指定 HTML 元素 <div> 做為地圖的容器。

就是說 getElementById("map_canvas") 
裡面的map_canvas原本是只建立一個div物件去設定他的canvas
不過我這裡是直接設定div的style長寬
無論如何這裡的map_canvas是要填入div 的id名稱。



測試
 <!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>test</title>


 <script src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?libraries=geometry&sensor=false"></script> <script type="text/javascript"> $(document).ready(function(){ var latlng = new google.maps.LatLng(22.732709,120.287507); //變數是小寫latlng, new後面的LatLng 的L是大寫!!! var myOptions = { zoom: 15, center: latlng, mapTypeId: google.maps.MapTypeId.ROADMAP }; //建立google.maps.Map - 基本物件,定義網頁上的單一地圖 var map = new google.maps.Map(document.getElementById("mymap"),myOptions); }); </script> </head> <body> <!-- 測試一個區塊--> <div id="mymap" style="width:500px; height:500px;"></div> </body> </html>


顯示結果

相關連結 :
參考書目 :
  • jQuery 網頁設計範例教學 - 德瑞工作室- 松崗出版
  • google API 大全 

2012年3月3日 星期六

jQuery練習-demo-isotope同位素網站

isotope這個網站做的東西我覺得很有趣
isotope是元素表吧?!
總之我覺得這個jquery還蠻不錯的,所以就來demo一下
好久沒有這麼熱血一整天弄個東西出來
繼上次以來已經好幾的月了


我先講一下isotope這個套件
其實我最喜歡的就是他這個過濾的功能 用元素表來表示過濾的功能真貼切
這樣的過濾功能能做的就是分類顯示甚麼東西 真的是很實用
isotope英文版的網站在此: http://isotope.metafizzy.co/index.html


isotope網站http://isotope.metafizzy.co/index.html
















ps 雖然網站提供下載使用,並不提供商業用途。
後來我用這個範例提供的basic.html去改變我要的樣子
用班上的人員分組來做過濾的功能
最後在用fancybox的套件來做個人單頁點案後的資料顯示
真的是挺有趣的 呵呵xd
這訣竅就是慢慢用GOOGLE翻譯跟測測什麼id或class影響了什麼
以各種分類來說 

每個人員都是一個<div class="elmenent + 分類名稱">
若以木竹組來說則為  <div class="elmenent  wood">
wood必須事先在css中定義。


練習結果: http://yiying2.ueuo.com/isotope_practice/demos/basic.html
如果無法正確顯示請使用較新版的瀏覽器。

http://yiying2.ueuo.com/isotope_practice/demos/basic.html練習結果
















2012年2月5日 星期日

PHP-極簡單之接收POST的資料&Insert到mysql資料表



 db_conn.php
<?php
$link=mysql_connect("localhost","root","root") or die ("連線失敗");
mysql_select_db("guestboard");
mysql_set_charset('utf8',$link);
?>
index.php
<html>
<body>
<form name="form1" method="POST" action="process.php">
帳號<input type="text" name="username" size="30"/><br/>
密碼<input type="text" name="password"size="30"/>
<input type="submit" value="送出"/>
<input type="reset" value="提交"/>
</form>
</body>
</html>
process.php
<?php
include ("db_conn.php");
$username = $_POST["username"];
$password = $_POST["password"];
$sql="INSERT INTO user (username, password) VALUES ('$username','$password')";
$result=mysql_query($sql);
echo $username;
echo $password;
?>


<script>
alert ("申請成功!");
</script>


PHP網頁處理:
GET POST 各有好處
若表單沒有設定method,則預設為GET
使用POST傳送表單,則接收的變數為$_POST
表單一定要包含在<body>標籤裡否則會傳送空值到資料庫。(有時候只會記得打html與form標籤卻忘了body標籤)
不論是$_GET或是$_POST都是超全域變數。


接收表單方式:
POST
$_POST[“欄位名稱”];
GET
$_GET[“欄位名稱”];

 (* $_POST 與 &_GET 最好都是英文大寫)



GET與POST優缺
GET
POST
不適合用來傳帳號密碼
適合較有隱密性的資料傳送
無法傳送大量資料,加上URL頂多255字元
可以傳送大量資料
資料會紀錄在網址上,適合做分頁
切換網頁不能在網址後面加上參數
如果不設定表單的method,會設定GET為預設值


BMI計算
分兩頁面;一頁為bmi.php另一頁為bmi_process.php(接收表單)。

bmi.php
<html>
<head>
</head>
<body>
<form name="form1" method="post" action="bmi_process.php">
BMI計算<br/>
身高: <input type="text" name="height" size="30"/>cm<br/>
體重: <input type="weight" name="weight" size="30"/>kg<br/>
<input type="submit" value="送出計算">
<input type="reset" value="重設">
</form>
</body>
</html>

bmi_process.php
<?php
$height=$_POST["height"];
$weight=$_POST["weight"];
$changm=$height/100;
$bmi=$weight/($changm*$changm);
echo "你好,你的BMI值是".$bmi."<br/>";
if($bmi<18.5)
        echo "BMI<18.5,你體重太輕了";
if($bmi>18.5 && $bmi<24){
        echo "此數值的BMI是正常的";
}
?>

加入javascript驗證欄位(其實也不是什麼很嚴謹的驗證,寫好玩的而已~)

補在bmi.php的<head>裡

<head>
<script>
function check(){
var write_h=document.form1.height.value;
var write_w=document.form1.weight.value;
if(write_h==""){
        alert ("請填入身高");
        return false;
}
if(write_w==""){
        alert ("請填入體重");
        return false;
}
}
</script>
</head>

2012年2月4日 星期六

PHP-函數.類別跟物件的筆記

<!--建立具兩個參數的函數,可做加減乘除,並顯示出來-->
<?php
function add($x,$y)
{
        return $x+$y;
}
function substract($x,$y){
        return $x-$y;
}
function doul($x,$y){
        return $x*$y;
}
function addition($x,$y){
        return $x/$y;
}
echo "10+2=".add(10,2)."<br/>";
echo "10-2=".substract(10,2)."<br/>";
echo "10*2=".doul(10,2)."<br/>";
echo "10/2=".addition(10,2)."<br/>";
?>
return是用來回傳一個值,如果沒有要回傳值就不用return
函數命名的原則:

(1)不分大小寫
(2)函數裡還可以用來包含其他函數或是類別
(3)PHP裡不可重新定義同樣名子的函數
不一定要在呼叫函數之前就建立函數。


傳值(call by value)跟傳址(call by reference): 就是指定變數的傳遞方式。
傳值格式:

 函數名稱($參數,...);
傳址格式:
函數名稱(&$參數,...)


PHP5.0開始建構元統一寫成 _ _construct();
<!--試做一類別來計算四方型的面積和週長,長=10cm,寬=5cm(網路上看到的題目)-->
<?php
class Count{
      public $x;
      public $y;
      public function area(){
             return $this->x*$this->y;
      }
      public function alllong(){
             return $this->x*2+$this->y*2;
      }
     
}
$square=new Count();
$square->x=10;
$square->y=15;
echo "面積是:".$square->area()."<br/>";
echo "周長是:".$square->alllong();
?>



public $x; 相當於 var $x;
$this和->是指物件本身,->用來存取物件的成員。
::這個運算子提供了一個功能就是不用建立物件。

<?php
class myclass{
        public function add($x=1,$y=2){echo $x+$y;}
}
myclass::add();
?>


在類別裡面可以定義常數,但是在類別裡定義的話呢。必須將常數關鍵字改成const
如果要存取類別裡面的常數的話,也是可以不用建立物件,改用::存取。
<?php
class MyWeight{
        const Weight=48;
        function display(){
                echo MyWeight::Weight;
        }
}
MyWeight::display();
?>


<!--定義一個room的類別,room類別有4個屬性,分別是roomNum(房號),roomSize(大),roomPeople(幾人),roomMonth(月),
建構函式有4個參數為num.size,people,month,來設定四個屬性的初始值,
建立四個方法 roomNum().roomSize(),roomPeople(),roomMonth();
最後顯示 某某某住1314號房,房間約5坪大,1人住,住了2個月
-->
<?php
class room{
public $roomNum;
public $roomSize;
public $roomPeople;
public $roomMonth;
function __construct($num,$size,$people,$month){
        $this->roomNum=$num;
        $this->roomSize=$size;
        $this->roomPeople=$people;
        $this->roomMonth=$month;
}
function roomNum(){
        return $this->roomNum;
}
function roomSize(){
        return $this->roomSize;
}
function roomPeople(){
        return $this->roomPeople;
}
function roomMonth(){
        return $this->roomMonth;
}
}
$obj=new room(1314,5,1,2);
echo "某某某住在".$obj->roomNum()."號房,房間約".$obj->roomSize()."坪大,".$obj->roomPeople()."人住,住了".$obj->roomMonth()."個月";
?>


<!--最後結果:某某某住在1314號房,房間約5坪大,1人住,住了2個月-->



另外這裡有費式數列寫法: 

http://blog.qoding.us/2012/01/php-fibonacci-sequence/

2012年1月7日 星期六

mobile_web練習二


http://yiyingwu.zxq.net/p1_mobile/index.html




http://yiyingwu.zxq.net/p1_mobile/index.html 
(練習網址,請將瀏覽器縮成約略手機螢幕的比例,如上圖xdd )

昨天看到一個不錯的範本就co下來解析解析一下
跟上一次練習的mobile web功能不太一樣,這個範本多了怎麼放google MAP,而且css也好理解很多... 謝天謝地,終於比較懂了點。上次在網路上看到範本太驚人的深奧了。

原來google的地理位置在url連結裡有,害我點了好久都找不到,像這樣
http://maps.google.com/maps?q=%E5%9C%8B%E7%AB%8B%E9%AB%98%E9%9B%84%E5%A4%A7%E5%AD%B8&hl=zh-TW&ie=UTF8&ll=22.731461,120.281925&spn=0.051377,0.066175&sll=37.0625,-95.677068&sspn=44.928295,67.763672&vpsrc=6&hq=%E5%9C%8B%E7%AB%8B%E9%AB%98%E9%9B%84%E5%A4%A7%E5%AD%B8&radius=15000&t=m&z=14&iwloc=B
原來連結已經透露地理位置了。

不過有些功能還是很不能理解,可能真的要有智慧型手機才能真的知道mobile web需要功能是什麼吧。寒假再來好好研究。


2011年12月25日 星期日

我的mysql對照表...





















A. index.php 建立mysql連線

<?php
$connection=mysql_pconnect('localhost','root','root');
mysql_select_db("class");
mysql_set_charset('utf8');

B.建立資料集
$result= mysql_query('select * from class',$connection) ;
//就是dw的建立資料集的意思 若資料集名稱為rs 則可下這句為$rs =mysql_query('select * from class',$connection) ;


$row_result=mysql_fetch_assoc($result);  
//mysql_fetch_assoc(); 以字串建值陣列傳回紀錄,變數result是mysql_query傳回的結果集


$totalRows_result=mysql_num_rows($result);
//mysql_num_rows傳回結果集($result)的紀錄筆數


C.將資料集欄位插入表格
<body>
<table >
<tr>
<td><?php echo $row_result['欄位名稱'] ?></td>
<td><?php echo $row_result['id'] ?></td>
<td><?php echo $row_result['name'] ?></td>
<td><?php echo $row_result['age'] ?></td>
</tr>
</table>
以上做法謹顯示一列資料

D.使表格顯示多筆紀錄

顯示多筆紀錄必須包住整個<tr>標籤
<?php do { ?>
<tr>
<td><?php echo $row_result['id'] ?></td>

<td><?php echo $row_result['id'] ?></td>
<td><?php echo $row_result['name'] ?></td>
<td><?php echo $row_result['age'] ?></td>

</tr><?php } while ($row_result=mysql_fetch_assoc($result));?>



E.分頁顯示
http://twpug.net/modules/smartsection/item.php?itemid=42

2011年12月24日 星期六

做網站企劃書的好工具






















發現了一個很棒的好網站 http://mockflow.com/





















不管是做網站企劃書.版面規劃都很不錯,請先註冊,登入後就可以開始選擇版型
一般的網頁甚至iphone. Android或是facebook app .Mobile Web都可以設計,元件已經都內建好了
不過內文區,似乎是不能打中文的~
他還有HTML5 FORMAT的功能。
以上圖片擷取自: http://mockflow.com/


更多連結:
網站企劃--企劃書的前置作業 
 Wireframes: Conceito & Ferramentas

2011年12月17日 星期六

MySQL Command Line Client環境指令

安裝appserv之後,從目錄底下打開MySQL Command Line Client
開這個的作用就是在處理資料庫,雖然裡面的指令就算不打開MySQL Command Line Client,使用phpmyadmin滑鼠點一點也是做得到,只是書上寫說如果是遇到作業環境是Linux,可能就要懂一下。這個功能我第一次看到xddd
所以打開MySQL Command Line Client之後的畫面第一步就是輸入你的密碼:
登入成功:
































比較常用到的mysql指令如下 : (注意分號 字母結尾es)
(1)show databases;   顯示你所有的資料庫
(2)create database [databasename];    建立一個資料庫。
比方說要建立一個名為booklist的資料庫create database  booklist ;
(3)drop database [databasename]; 刪除資料庫。
比方說要刪除一個名為booklist的資料庫 drop database   booklist ;
(4)use [databasename] ;  use的功能是用來切換資料庫的,假如你原本使用booklist資料庫,現在要切換成另外一個price的資料庫,就是use price;
(5)create table[table name](field type,field type,..) 建立表格,建立表格之前一定要先切換使用資料庫,不然就等於你根本沒告訴電腦你要使用哪一個資料庫,這樣表格要建在哪呢?~
(6)drop table [tablename];


查詢資料select
select *from [table name];

2011年12月15日 星期四

零碎的PHP筆記-album

(1)檔案大小限制:
當我們在做網路相簿的時候,考慮到使用者上傳照片的檔案限制,關於這個部分,php.ini的設定本,本身就有預設了,所以呢... 我們必須要依照他的預設值限制圖檔的大小,如memory_limit>post_max_size >upload_max_size


當我們上傳一個檔案的時候,從表單POST出去的檔案大小,最大是8MB,可以在phoinfo.php裡設定post_max_size設定,但是記住8MB並不是只一個檔案的最大限制大小,是指整個POST出去的大小。


(2)die與exit:
die敘述和exit類似,跳脫程式,也就是後面的程式碼就不執行了。die後面如果有括弧 ,括弧內的文字就是要印出來的文字。
PHP的die函數介紹-http://www.w3school.com.cn/php/func_misc_die.asp


(3)判斷是否為圖檔
函數getimagesize判斷檔案是不是圖檔。
$checkImg=getimagesize($_FILES['uploadfile']['tmp_name']);
if (!$checkImg)
die("此圖格式不是圖檔");

(4) big5轉utf8
試著上傳中文檔名的圖片檔會出現錯誤,utf8的網頁無法處理在big5系統的檔名,可以以iconv函數處裡,iconv只是將檔名轉成utf8 
[PHP]iconv UTF-8轉Big5 無法正常運作問題--> http://plus-now.com/?p=338


(5)Column 'FileType' cannot be null 錯誤
Column 'FileType' cannot be null 就是Column '欄位名稱' cannot be null ,出現這個錯誤表示你已經在mysql設定FileType可以不可以是空值,因此取消這個錯誤就是到phpmyadmin把FileType允許為空值。


(6)把其他檔案嵌入(包含)到目前的php檔案中:
include()
include_once()
require()
require_once() 
include比較能容納更多的功能,比方說require跟include相較之下,include可以放迴圈還有判斷式等等的


(7)把頁面導向某頁面/ 幾秒後導向某頁面
header(); 函式
ex:
<?php
header("location=index.php") ;
?>
重新讀取:
header("refresh:2") ;   //2秒後重新讀取頁面


(8)cookie 丟餅乾給瀏覽網站的人


(9)輸出網頁內容的方式
1. echo  
2.print
3.printf -->能輸出格式化的字串,前兩者不是格式化的字串


類別跟物件:
如果有寫過as3的人都知道比方說要使用Date  還要再用一個new,恩..這樣的說法有點爛...這真的是好久以前的事了, 比方說: 


var now : Date();
now = new Date();


以前在學的時候常不懂為甚麼要用new ,甚麼時候要用new,到最後也不想追究這個問題了,反正就習慣成自然。
像var now : Date 就是定義了變數now的類別的意思,但是這樣只是事先描述這個物體,但不是真的已經產生這個實體,所以才會再用個now真正建立這個實體。 

在網路上我也看過另一種說法,透過new呼叫Date的函式將Date的類別建立出來,這個說法是我暑假在google爬文看到了,這種說法沒有三兩三是看不懂的,就像那時候的我一樣~



















常數:
變數就是會動的,所以常數就是不會變動的,在PHP有內建的自訂的常數。不管是哪一種
(1)常數的名稱前面不可以有$ ,$是變數的,常數的前面沒有$
(2)常數的範圍屬於超級全域 (超級全域函數就是整個程式都可以用)
(3)內建函數通常都是大寫開頭  像PHP_VERSION就是
常見的預設常數有
PHP_VERSION. 
PHP_OS . 
E_ERROR .
 E_WARNING . 
E_NOTICE. 
TRUE.
 FALSE



IP:
$REMOTE_ADDR() 是PHP用來取得使用者IP的變數

2011年12月11日 星期日

Unity試做-FPS第一人稱+射擊(簡陋版)

話說這兩周摸unity也有幾小時以上,都一直看教學檔總該來試試。 Unity真的是很新又很簡潔的遊戲開發,簡潔到會讓我懷疑真的這樣就ok了嗎= = 。雖然開發變得簡單,不過...美工有點麻煩了,可能會要Maya或是3dmax能夠自行建立場景跟人物等等會比較吃香?! 像我的子彈也不過就是一個簡單的cube物件,挨...

上面這張圖是一開始在建立地形的時候。
之後又補上fog跟天空
最後直接加上第一人稱就好了,比較麻煩的就是子彈的射擊...需要寫javascript
還好我本來就不太會Javascript所以直接上網找資料,哈哈~
google chrome是一輩子的好老師
我做好的東西在http://yiyingwu.zxq.net/  是一個rar檔,解壓後要打開WebPlayer.html
可能沒處理好檔案實在太大了.... 
按鍵盤"p" 是射擊子彈~
上下左右鍵是移動 

相關連結:
Unity官方網站 http://unity3d.com/
google "Unity教學"



Vue multiselect set autofocus and tinymce set autofocus

要在畫面一進來 focus multiselect 的方式: 參考: https://jsfiddle.net/shentao/mnphdt2g/ 主要就是在 multiselect 的 tag 加上 ref (例如: my_multiselect), 另外在 mounted...