Widget Example‎ > ‎

Foursquare Widget


GPS의 자표를 사용해서 Google Maps상에 FourSquare의 Venus를 표시하는 샘플을 작성하겠습니다.

Foursquare API

이번에는 Foursquare API와 Google Maps를 임베딩해서 어플리를 개발하겠습니다.
아래 URL에서 Foursquare API의 상세설명이 기재되어 있습니다.


http://api.foursquare.com/v1/venues.json?geolat=위도&geolong=경도


신규 프로젝트 작성

Eclipse의 메뉴로부터 [New]-[Project]를 선택하고, [New Project]다이얼로그박스에서 "Droidget Wizards"-"project"을 선택합니다.

GPS를 사용하는 Widget을 개발하는데는 Feature에서 GPS의 설정을 수행합니다. Access에서 Web API에 접소할때에 사용하는 URI를 설정합니다.

우선, Feature에서 GPS의 설정을 수행합니다.




Foursquare의 Web API를 사용하는데는,

http://foursquare.com
http://maps.gstatic.com
http://google.com/

에 악세스 허가를 받을 필요가 있습니다.






src/config.xml
<?xml version="1.0" encoding="UTF-8"?>
<widget id="FoursquareMap_1279460600275" version="1.0" width="300" height="300">
    <content src="index.html" type="text/html"/>
    <name>FoursquareMap</name>
    <description>The sample of Google Map</description>
    <author url="http://www.gclue.jp">GClue</author>
    <icon src="icon.png"/>
    <license></license>
    <feature name="http://bondi.omtp.org/api/geolocation" />
    <access uri="http://google.com/" subdomains="true"/>
    <access uri="http://maps.gstatic.com" subdomains="false"/>
    <access uri="http://foursquare.com" subdomains="true"/>
</widget>

JavaScript파일 작성

프로젝트의 src폴더에 JavaScript용의 폴더인 js폴더를 작성해서 js폴더 밑에 script.js라는 이름의 파일을 작성합니다.

src/js/script.js
var map null;

function onLoad(){
  bondi.geolocation.getCurrentPosition(onPositionSuccessonPositionError{timeout:40000});
}

// this function will handle each position updates
function onPositionSuccess(position{
  lat position.coords.latitude;
  lon position.coords.longitude;

  map new GMap2(document.getElementById("map_canvas"));
  map.setCenter(new GLatLng(latlon)15);
  map.setUIToDefault();
  
  var url "http://api.foursquare.com/v1/venues.json?geolat=" lat "&geolong=" lon;
  json(resultJsonurl);
  
}

// this function will handle each error in position updates
function onPositionError(error{
  
}

 
// callback of JSON
function resultJson(json){
  
  for(var 0json.groups[0].venues.lengthi++){
    
    var icon new GIcon();
    icon.image json.groups[0].venues[i].primarycategory.iconurl;
    icon.iconSize new GSize(3535);
    icon.shadow "";
    icon.shadowSize new GSize(00);
    icon.iconAnchor new GPoint(00);
    icon.infoWindowAnchor new GPoint(00);
    
    var lat json.groups[0].venues[i].geolat;
    var lon json.groups[0].venues[i].geolong;
    var marker new GMarker(new GLatLng(lat,lon),icon);

        map.addOverlay(marker);
  }

}

// JSON
function json(callbackurl){
     
  var http_connect new XMLHttpRequest();
  http_connect.open("GET"urltrue);

  http_connect.onreadystatechange function({
    
    if (http_connect.readyState == 4{
      if(http_connect.status == 200){    
        callback(eval("("+http_connect.responseText+")"));
      }else{
        alert("Can't connect");
      }
    }
  }
  http_connect.send();
}

index.html파일 편집 


index.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta http-equiv="Content-Style-Type" content="text/css" />
    <meta http-equiv="Content-Script-Type" content="text/javascript" />
    <title>Google Map Sample</title>
    <script src="http://maps.google.com/maps?file=api&amp;v=2&amp;sensor=true_or_false&amp;key=취득Keytype="text/javascript"></script>
    <script type="text/javascript" src="js/script.js"></script>
</head>
<body onload="onLoad()">
    <img src="img/poweredby-foursquare.png">
    <div id="map_canvas" style="width: 250px; height: 250px"></div>
</body>
</html>


패키징

다음은 패키징 작업을 수행합니다. Package Explorer의 FoursquareSample프로젝트를 클릭한 상태에서 Eclipse의 [Droidget]-[Packaging]을 클릭하여 패키징 작업을 실행합니다.

패키징 작업이 성공하면 FoursquareSample.wgt파일이 자동으로 생성됩니다.


USB경유한 전송

USB로 개발단말기를 접속해 놓고 Eclipse의 [Droidget]-[Packaging Install]을 클릭하여 전송 및 인스톨 작업을 실행합니다.

Web경유한 전송

완성한 FoursquareSample.wgt를 Web경유하여 실기에 전송하기 위해서는 download용의 html파일을 작성합니다.

Download.html
<html>
<head>
    <title>Download</title>
</head>
<body>
    <a href="droidget://www.example.com/FoursquareSample.wgt">FoursquareSample</a><br>
</body>
</html>


실행결과



※ 본 튜토리얼에서 사용하고 있는 화면은 KDDI/auのIS01의 대기화면을 사용하고 있습니다.
Comments