    var map;
    var myPano;
    var panoClient;
    var currentLatLng = new GLatLng(35.617605,139.676088);
    var currentYaw = 0;
    var fovMarker;
    var iconSize = 150;
    var icon;

    //次の目標点までの距離
    var distance;
    var arrcount;
    var points;

    function initialize(chosen) {
    	
		panoClient = new GStreetviewClient();
		map = new GMap2(document.getElementById("map"),{draggableCursor:"crosshair"});
		map.addControl(new GLargeMapControl());
		map.addControl(new GMenuMapTypeControl(true, false));
		map.setCenter(currentLatLng, 16);

        icon = new GIcon();
        icon.image = "http://www.google.co.jp/intl/ja_jp/mapfiles/cb/man_arrow-0.png ";
        icon.iconSize = new GSize(49, 52);
        icon.iconAnchor = new GPoint(25, 35); // near base of guy's feet
        icon.infoWindowAnchor = new GPoint(25, 5); // top of guy's head
        icon.shadow = null;

		myPano = new GStreetviewPanorama(document.getElementById("pano"));
		myPano.setLocationAndPOV(currentLatLng, {yaw:currentYaw, pitch:0});
		fovMarker = new GMarker(currentLatLng , icon, {clickable: false});

		GEvent.addListener(map,"click", function(overlay,point) {
		  currentLatLng=point;
		  myPano.setLocationAndPOV(currentLatLng);
		  map.setCenter(currentLatLng);
		  map.removeOverlay(fovMarker);
		  fovMarker = new GMarker(map.getCenter() ,icon,{clickable: false});
		  map.addOverlay(fovMarker);
		  return;
		});
		GEvent.addListener(myPano, "initialized", handleInitialized);
		GEvent.addListener(myPano, "yawchanged", handleYawChange);
		svOverlay = new GStreetviewOverlay(); // 消しても可
		map.addOverlay(svOverlay); // 消しても可

        var pointlast = new GLatLng(35.618851,139.673687); //★位置設定
        var point1 = new GLatLng(35.617613,139.676088);
        var point2 = new GLatLng(35.618761,139.674936);
        var point3 = new GLatLng(35.618641,139.674299);
        var point4 = new GLatLng(35.618829,139.673921);
        var marker1 = createMarker(pointlast, '<img src="/img/share/logoMain.gif" alt="株式会社インフォサイド" /><br>株式会社インフォサイド<br>東京都目黒区八雲1-7-21<br>TEL:03-5848-6153<br>FAX:03-5848-6154'); // ★フキダシ中の文字
        map.addOverlay(marker1);

        var points = [ point1, point2, point3, point4, pointlast];
		map.addOverlay(new GPolyline(points,"#0000ff", 7, 0.6));
		arrowHead(points);
		//念のためにボタンを有効に
		document.getElementById('guide').disabled=false;

		//window.setInterval("update()", 1000);
		return;
	}

	function handleInitialized(location) {
		map.setCenter(location.latlng);
		currentLatLng=location.latlng;
		placeFovMarker();
		return;
	}

	/*function update(){
		point = new GLatLng(point.lat() + 0.01, point.lng() + 0.01);

		map.panTo(point);
	}*/

	function handleYawChange(yaw) {
		currentYaw = Math.round(yaw);
		placeFovMarker();
		return;
	}
	function placeFovMarker(){
		map.removeOverlay(fovMarker);
		fovMarker = new GMarker(currentLatLng, icon, {clickable: false});
		map.addOverlay(fovMarker);
		return;
	}
	function new_center(lat,long) {
		var point = new GLatLng(lat,long);
		currentLatLng=point;
		myPano.setLocationAndPOV(currentLatLng);
		map.setCenter(currentLatLng);
		map.removeOverlay(fovMarker);
		fovMarker = new GMarker(map.getCenter(), icon, {clickable: false});
		map.addOverlay(fovMarker);
		return;
	}
	function createMarker(point,html) {
		var marker = new GMarker(point);
		GEvent.addListener(marker, "click", function() {
		marker.openInfoWindowHtml(html);
		});
		return marker;
	}

	//道案内スクリプト
	function startGuide(){
		//リンクをたどって目的地へ
		document.getElementById('guide').disabled=true;
		new_center(35.617613,139.676088);
		//経由点指定
        var point1 = new GLatLng(35.617613,139.676088);
        var point2 = new GLatLng(35.618761,139.674936);
        var point3 = new GLatLng(35.618641,139.674299);
        var point4 = new GLatLng(35.618829,139.673921);
		var pointlast = new GLatLng(35.618851,139.673687);
		points = new Array(point1, point2, point3, point4, pointlast);

		dir = getDirection( point1, point2 );
		goal = point2;
		arrcount = 0;
		rotate(dir);
		count = 0;
		distance = point1.distanceFrom(point2);
		timer = setInterval("moving()",1500);
	}

	//指定されたポイントをたどって移動
	function moving(){
		var direction = getDirection(points[arrcount], points[arrcount + 1]);
		var goal = points[arrcount + 1];
		if(chkLatLngeql(goal)){
			clearInterval(timer);
			if(points[arrcount + 2]){
				var nextdir = getDirection(points[arrcount + 1], points[arrcount + 2]);
				distance = points[arrcount + 1].distanceFrom(points[arrcount + 2]);
				rotate(nextdir);
				++arrcount;
				timer = setInterval("moving()",1500);
			}else{
				lastMove();
			}
		}else{
			//目標に近付けていない場合は終了する
			if( distance < currentLatLng.distanceFrom(points[arrcount+1]) ){
				clearInterval(timer);
				document.getElementById('guide').disabled=false;
			}else{
				myPano.followLink(direction);
			}
			distance = currentLatLng.distanceFrom(points[arrcount+1]);
		}
	}

	// 目的の方向に向かって旋回
	function rotate( course ){
		var judge = currentYaw - course;
		if(judge < -180){
			judge += 360;
		}else if(judge > 180){
			judge -= 360;
		}
		if(judge > 0){
			while(Math.abs(course - currentYaw) >= 3){
				rotateLeft();
			}
		}else{
			while(Math.abs(course - currentYaw) >= 3){
				rotateRight();
			}
		}
	}

	//左右回転
	function rotateLeft(){
		currentYaw -= 5;
		if(currentYaw < 0){
			currentYaw += 360;
		}
		currentPitch = 0;
		myPano.panTo({yaw:currentYaw, pitch:currentPitch});
	}
	function rotateRight(){
		currentYaw += 5;
		if(currentYaw > 360){
			currentYaw -= 360;
		}
		currentPitch = 0;
		myPano.panTo({yaw:currentYaw, pitch:currentPitch});
	}

	//現在位置と目的地の差分を取って同じと判断できる場合TRUE
	//正確に目的地の座標を取らないと働きません
	function chkLatLngeql( glatlng ){
		var crrlat = currentLatLng.lat();
		var crrlng = currentLatLng.lng();

		var destlat = glatlng.lat();
		var destlng = glatlng.lng();

		if( (0 == destlat - crrlat) && (0 == destlng - crrlng)){
			return(true);
		}else{
			return(false);
		}
	}
	//移動の最後に処理を追加したい場合
	function lastMove(){
		//南を向く
		rotate(180);
		document.getElementById('guide').disabled=false;
	}

	//点から点への方向をとる
	function getDirection( glatlan1, glatlan2 ){
		var y1 = glatlan1.lat();
		var x1 = glatlan1.lng();

		var y2 = glatlan2.lat();
		var x2 = glatlan2.lng();

		var y = y2 - y1;
		var x = x2 - x1;

		x = x * Math.cos((y1 + y2) / 2 * Math.PI / 180);
		var z = Math.pow((Math.pow(x, 2) + Math.pow(y, 2)), 1/2 );

		var tmp = Math.acos( x/z )* 180 / Math.PI;

		tmp = 90 - tmp;
		if(tmp < 0){
			tmp += 360;
		}
		return(tmp);
	}
	
	
	if (GBrowserIsCompatible()) {
      var arrowIcon = new GIcon();
      arrowIcon.iconSize = new GSize(24,24);
      arrowIcon.shadowSize = new GSize(1,1);
      arrowIcon.iconAnchor = new GPoint(12,12);
      arrowIcon.infoWindowAnchor = new GPoint(0,0);

      var degreesPerRadian = 180.0 / Math.PI;
      function bearing( from, to ) {
        var lat1 = from.latRadians();
        var lon1 = from.lngRadians();
        var lat2 = to.latRadians();
        var lon2 = to.lngRadians();
        var angle = - Math.atan2( Math.sin( lon1 - lon2 ) * Math.cos( lat2 ), Math.cos( lat1 ) * Math.sin( lat2 ) - Math.sin( lat1 ) * Math.cos( lat2 ) * Math.cos( lon1 - lon2 ) );
        if ( angle < 0.0 )
	    angle  += Math.PI * 2.0;
        angle = angle * degreesPerRadian;
        angle = angle.toFixed(1);
        return angle;
      }

      function arrowHead(points) {
      	for(cnt = 1; cnt < points.length-1;cnt++){
	        var p1=points[cnt];
	        var p2=points[cnt-1];
	        var dir = bearing(p2,p1);
	        var dir = Math.round(dir/3) * 3;
	        while (dir >= 120) {dir -= 120;}
	        arrowIcon.image = "http://www.google.com/intl/en_ALL/mapfiles/dir_"+dir+".png";
	        map.addOverlay(new GMarker(p1, arrowIcon));
	    }
      }
    }