亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? map.java.svn-base

?? 利用J2ME編寫的手機應用程序。 功能包括顯示圖片
?? SVN-BASE
?? 第 1 頁 / 共 2 頁
字號:
		int dist = Integer.MAX_VALUE;
		MapOverlay closest = null;
		for (int i = 0; i < overlays.size(); i++)
		{
			MapOverlay mp = (MapOverlay)overlays.elementAt(i);
			Point pos = mp.getPos();
			if (pos == null) continue;
			
			int newdx = mp.getPos().x - cursorWorld.x;
			int newdy = cursorWorld.y - mp.getPos().y;
			
			if (sameSign(newdx, dx) && sameSign(newdy, dy))
			{
				int d = cursorWorld.distance2(mp.getPos());
				if (mp != cursorSelected && d < dist)
				{
					closest = mp;
					dist = d;
				}
			}
		}

		if (cursorSelected != null && listener != null)
			listener.onOverlayUnselected(cursorSelected, cursorPos);
		
		if (closest != null)
		{
			Point closestPos = worldToPixel(closest.getPos());
			dist = closestPos.distance2(new Point(cursorPos.x + (dx / 2), cursorPos.y + (dy / 2)));
		}

		if (closest != null && dist < cursorStep * cursorStep)
		{
			cursorPos = worldToPixel(closest.getPos());
			cursorSelected = closest;

			if (listener != null)
				listener.onOverlaySelected(cursorSelected, closest.getPos());
		}
		else
		{
			cursorSelected = null;
			cursorPos.x = Math.max(Math.min(cursorPos.x + dx, cxViewport - cursor.getWidth()), 1);
			cursorPos.y = Math.max(Math.min(cursorPos.y + dy, cyViewport - cursor.getHeight()), 1);
		}
		
		int xbounds = cxViewport / 4;
		int ybounds = cyViewport / 4;
		
		int dxmap = 0;
		int dymap = 0;
		
		if (cursorPos.x < xbounds)
		{
			dxmap = cursorPos.x - xbounds;
			cursorPos.x = xbounds;
		}
		else if (cursorPos.x > cxViewport - xbounds)
		{
			dxmap = cursorPos.x - (cxViewport - xbounds);
			cursorPos.x = cxViewport - xbounds;
		}
		if (cursorPos.y < ybounds)
		{
			dymap = cursorPos.y - ybounds;
			cursorPos.y = ybounds;
		}
		else if (cursorPos.y > cyViewport - ybounds)
		{
			dymap = cursorPos.y - (cyViewport - ybounds);
			cursorPos.y = cyViewport - ybounds;
		}
		
		if (dxmap != 0 || dymap != 0)
		{
			Point oldc = worldToPixel(this.x, this.y);
			oldc.x += dxmap;
			oldc.y += dymap;
			Point newc = pixelToWorld(oldc);
			
			if (dxmap != 0 && dymap != 0)
				this.setPosition(newc.x, newc.y);
			else if (dxmap != 0)
				this.setPosition(newc.x, this.y);
			else
				this.setPosition(this.x, newc.y);
		}
		
		int x = Math.min(old.x, cursorPos.x) - 3;
		int y = Math.min(old.y, cursorPos.y) - 3;
		int cx = (Math.max(old.x, cursorPos.x) - x) + cursor.getWidth();
		int cy = (Math.max(old.y, cursorPos.y) - y) + cursor.getHeight();
		this.repaint(x, y, cx, cy);
	}
	
	public void setPosition(int x, int y)
	{
		this.x = x;
		this.y = y;
		updateViewport();
	}
	
	public void setUserPosition(int x, int y)
	{
		userx = x;
		usery = y;
	}
	
	public int getZoom()
	{
		return zoomlevel;
	}
	
	public void notifyNewTile(MapTile tile)
	{
		if (tile.getZoom() == zoomlevel)
		{
			int x = dxViewport + tilesize * (tile.getX() - tilex);
			int y = dyViewport + tilesize * (tile.getY() - tiley);

			if (x >= -tilesize && x <= cxViewport && y >= -tilesize && y <= cyViewport)
			{
				tile.setVisibility(true);
				repaint(x, y, tilesize, tilesize);
			}
		}
	}
	
	public void notifyOverlayClick(MapOverlay overlay, Point pos)
	{
		if (listener != null)
			listener.onOverlayClick(overlay, pos);
	}
	
	public Point pixelToWorld(Point pixel)
	{
		return pixelToWorld(pixel.x, pixel.y);		
	}
	
	public Point pixelToWorld(int x, int y)
	{
		Point pt = new Point(0, 0);
		float rx = (((float)x - (float)dxViewport) / (float)tilesize) + (float)tilex;
		float ry = (((float)y - (float)dyViewport) / (float)tilesize) + (float)tiley;				
		pt.x = maxWest + (int)(rx * (float)tilesize_real[zoomlevel]);
		pt.y = maxNorth - (int)(ry * (float)tilesize_real[zoomlevel]);
		return pt;
	}

	public Point worldToPixel(Point world)
	{
		return worldToPixel(world.x, world.y);
	}
	
	public Point worldToPixel(int x, int y)
	{
		Point pt = new Point(0, 0);		
		int wx = x - maxWest;
		int wy = (maxNorth - maxSouth) - (y - maxSouth);
		float dx = (float)wx / (float)tilesize_real[zoomlevel];
		float dy = (float)wy / (float)tilesize_real[zoomlevel];
		pt.x = dxViewport + (int)((float)tilesize * (dx - (float)tilex));
		pt.y = dyViewport + (int)((float)tilesize * (dy - (float)tiley));		
		return pt;		
	}
	
	public void pointerPressed(int x, int y)
	{
		if (listener == null)
			return;
		
		if (this.cursorSelected != null)
		{
			listener.onOverlayClick(this.cursorSelected, new Point(x, y));
			return;
		}
		
		Point world = pixelToWorld(x, y);
		// check overlays
		for (int i = 0; i < overlays.size(); i++)
		{
			MapOverlay mo = (MapOverlay)overlays.elementAt(i);
			if (mo.hitTest(world))
			{
				listener.onOverlayClick(mo, world);
				return;
			}
		}
	}
	
	private void broadcastKeyPressed(int key)
	{
		for (int i = 0; i < keyListeners.size(); i++)
			((MapInputListener)keyListeners.elementAt(i)).onKeyPressed(key);
	}
	
	public void keyRepeated(int key)
	{
		int action = getGameAction(key);
		switch (action)
		{
			case Canvas.UP:
				broadcastKeyPressed(action);
				moveCursor(0, -cursorStep);
				break;
			case Canvas.DOWN:
				broadcastKeyPressed(action);
				moveCursor(0, cursorStep);
				break;
			case Canvas.LEFT:
				broadcastKeyPressed(action);
				moveCursor(-cursorStep, 0);
				break;
			case Canvas.RIGHT:
				broadcastKeyPressed(action);
				moveCursor(cursorStep, 0);
				break;
		}
	}
	
	public void keyPressed(int key)
	{
		int action = getGameAction(key);
		switch (action)
		{
			case Canvas.UP:
				broadcastKeyPressed(action);
				moveCursor(0, -cursorStep);				
				break;
			case Canvas.DOWN:
				broadcastKeyPressed(action);
				moveCursor(0, cursorStep);
				break;
			case Canvas.LEFT:
				broadcastKeyPressed(action);
				moveCursor(-cursorStep, 0);
				break;
			case Canvas.RIGHT:
				broadcastKeyPressed(action);
				moveCursor(cursorStep, 0);
				break;
			case Canvas.FIRE:
				broadcastKeyPressed(action);
				pointerPressed(cursorPos.x, cursorPos.y);
				break;
		}
		
		switch (key)
		{
			case -6:	// LEFT BUTTON
				broadcastKeyPressed(Canvas.FIRE);
				pointerPressed(cursorPos.x, cursorPos.y);
				break;
			case -7:	// RIGHT BUTTON
				broadcastKeyPressed(Canvas.GAME_A);
				break;
			case 35:	// *
				setZoom(getZoom() - 1);
				break;
			case 42:	// #
				setZoom(getZoom() + 1);
				break;
		}
	}

	public void locationUpdated(LocationProvider lp, Location loc)
	{
		QualifiedCoordinates coord = loc.getQualifiedCoordinates();
		Coordinate utm = Map.latLonToUTMXY(coord.getLatitude(), coord.getLongitude(), 32.0);
		locationProviderMethod = loc.getLocationMethod();

		gpslog += "m: ";
		if ((locationProviderMethod & Location.MTE_SATELLITE) != 0)
			gpslog += "SAT|";
		if ((locationProviderMethod & Location.MTA_ASSISTED) != 0)
			gpslog += "ASS|";
		if ((locationProviderMethod & Location.MTE_ANGLEOFARRIVAL) != 0)
			gpslog += "ANG|";
		gpslog += "\n";
		
		this.setUserPosition((int)utm.x, (int)utm.y);
		this.setPosition(userx, usery);
		gpslog += "pos: " + String.valueOf(userx) + ", " + String.valueOf(usery) + "\n";
	}

	public void providerStateChanged(LocationProvider lp, int newState)
	{
		this.locationProviderStatus = newState;
		switch (locationProviderStatus)
		{
			case LocationProvider.AVAILABLE:
				gpslog += "state = available\n";
				break;
			case LocationProvider.TEMPORARILY_UNAVAILABLE:
				gpslog += "state = temp\n";
				break;
			case LocationProvider.OUT_OF_SERVICE:
				gpslog += "state = out-of-service\n";
				break;
		}

		repaint();
	}
	
    public void providerSelectedEvent()
    {
    	locationProvider = ConfigProvider.getInstance().getSelectedProvider();
    	locationProviderStatus = locationProvider.getState();
    	locationProvider.setLocationListener(this, 10, 5, 5);
    }
    
    public void enableCursor()
    {
    	cursorEnabled = true;
    }

    public void disableCursor()
    {
    	cursorEnabled = false;
    }
	
	/*
	 * LATLON to UTM conversion math made statically available
	 */
    static double sm_a = 6378137.0;
    static double sm_b = 6356752.314;
    static double sm_EccSquared = 6.69437999013e-03;
    static double UTMScaleFactor = 0.9996;

    static double degToRad(double deg)
    {
        return (deg / 180.0 * Math.PI);
    }
    static double radToDeg(double rad)
    {
        return (rad / Math.PI * 180.0);
    }

    static double arcLengthOfMeridian(double phi)
    {
        double alpha, beta, gamma, delta, epsilon, n;
        double result;

        /* Precalculate n */
        n = (sm_a - sm_b) / (sm_a + sm_b);

        /* Precalculate alpha */
        alpha = ((sm_a + sm_b) / 2.0)
           * (1.0 + (n * n / 4.0) + (n * n * n * n / 64.0));

        /* Precalculate beta */
        beta = (-3.0 * n / 2.0) + (9.0 * n * n * n / 16.0)
           + (-3.0 * n * n * n * n * n / 32.0);

        /* Precalculate gamma */
        gamma = (15.0 * n * n / 16.0)
            + (-15.0 * n * n * n * n / 32.0);
    
        /* Precalculate delta */
        delta = (-35.0 * n * n * n / 48.0)
            + (105.0 * n * n * n * n * n / 256.0);
    
        /* Precalculate epsilon */
        epsilon = (315.0 * n * n * n * n / 512.0);
    
        /* Now calculate the sum of the series and return */
        result = alpha
        	* (phi + (beta * Math.sin (2.0 * phi))
            + (gamma * Math.sin (4.0 * phi))
            + (delta * Math.sin (6.0 * phi))
            + (epsilon * Math.sin (8.0 * phi)));

        return result;
    }

    static double UTMCentralMeridian(double zone)
    {
        double cmeridian;
        cmeridian = degToRad(-183.0 + (zone * 6.0));    
        return cmeridian;
    }

    static Coordinate mapLatLonToXY(double phi, double lambda, double lambda0)
    {
        double N, nu2, ep2, t, t2, l;
        double l3coef, l4coef, l5coef, l6coef, l7coef, l8coef;
 
        /* Precalculate ep2 */
        ep2 = ((sm_a * sm_a) - (sm_b * sm_b)) / (sm_b * sm_b);
    
        /* Precalculate nu2 */
        nu2 = ep2 * Math.cos(phi) * Math.cos(phi);
    
        /* Precalculate N */
        N = (sm_a * sm_a) / (sm_b * Math.sqrt (1.0 + nu2));

        /* Precalculate t */
        t = Math.tan(phi);
        t2 = t * t;
  
        /* Precalculate l */
        l = lambda - lambda0;
    
        /* Precalculate coefficients for l**n in the equations below
           so a normal human being can read the expressions for easting
           and northing
           -- l**1 and l**2 have coefficients of 1.0 */
        l3coef = 1.0 - t2 + nu2;
        l4coef = 5.0 - t2 + 9.0 * nu2 + 4.0 * (nu2 * nu2);
        l5coef = 5.0 - 18.0 * t2 + (t2 * t2) + 14.0 * nu2 - 58.0 * t2 * nu2;
        l6coef = 61.0 - 58.0 * t2 + (t2 * t2) + 270.0 * nu2 - 330.0 * t2 * nu2;
        l7coef = 61.0 - 479.0 * t2 + 179.0 * (t2 * t2) - (t2 * t2 * t2);
        l8coef = 1385.0 - 3111.0 * t2 + 543.0 * (t2 * t2) - (t2 * t2 * t2);

        double cosphi = Math.cos(phi);
        
        /* Calculate easting (x) */
        double x = N * cosphi * l
            + (N / 6.0 * (cosphi * cosphi * cosphi) * l3coef * l * l * l)
            + (N / 120.0 * (cosphi * cosphi * cosphi * cosphi * cosphi) * l5coef * l * l * l * l * l)
            + (N / 5040.0 * (cosphi * cosphi * cosphi * cosphi * cosphi * cosphi * cosphi) * l7coef * l * l * l * l * l * l * l);
    
        /* Calculate northing (y) */
        double y = arcLengthOfMeridian(phi)
            + (t / 2.0 * N * (cosphi * cosphi) * l * l)
            + (t / 24.0 * N * (cosphi * cosphi * cosphi * cosphi) * l4coef * l * l * l * l)
            + (t / 720.0 * N * (cosphi * cosphi * cosphi * cosphi * cosphi * cosphi) * l6coef * l * l * l * l * l * l)
            + (t / 40320.0 * N * (cosphi * cosphi * cosphi * cosphi * cosphi * cosphi * cosphi * cosphi) * l8coef * l * l * l * l * l * l * l * l);
        
        return new Coordinate(x, y, 0.0);
    }
        
    public static Coordinate latLonToUTMXY(double lat, double lon, double zone)
    {
    	Coordinate c = mapLatLonToXY(degToRad(lat), degToRad(lon), UTMCentralMeridian(zone));
        c.x = c.x * UTMScaleFactor + 500000.0;
        c.y *= UTMScaleFactor;
        if (c.y < 0.0)
            c.y += 10000000.0;
        return c;
    }

	public void querySuccess(ResultSet rs) 
	{
		while (rs.next())
			addMapTile(rs.getInt("filehandle"), rs.getInt("x"), rs.getInt("y"), zoomlevel);
		rs.close();
		computeVisibility();
	}

	public void xmlFailure(String error, Object param) {
	}

	public void xmlImageSuccess(Image image, Object param) {
	}

	public void xmlSuccess(KXmlParser xml, Object param) throws Exception {
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩毛片一二三区| 欧美三级韩国三级日本三斤| 亚洲欧美日韩国产另类专区| 日韩精品一区二区三区在线 | 成人av网址在线| 亚洲一区二区三区四区在线免费观看| 国产亚洲人成网站| 欧美日韩黄色一区二区| 国产成人免费在线观看不卡| 日韩制服丝袜av| 亚洲欧美乱综合| 久久久五月婷婷| 91精品在线麻豆| 欧美中文字幕亚洲一区二区va在线| 国产一区二区在线免费观看| 丝袜a∨在线一区二区三区不卡| 欧美国产日韩亚洲一区| 91精品久久久久久久91蜜桃 | 欧美一区二区三区四区久久| 色94色欧美sute亚洲线路二 | 另类小说视频一区二区| 一区二区三区四区国产精品| 国产精品私房写真福利视频| 精品区一区二区| 欧美精品视频www在线观看| 一本一道综合狠狠老| 成人午夜电影小说| 国产一区不卡视频| 青草av.久久免费一区| 亚洲va欧美va国产va天堂影院| 亚洲视频一二三区| 国产精品灌醉下药二区| 国产偷v国产偷v亚洲高清| 日韩欧美黄色影院| 欧美喷潮久久久xxxxx| 欧洲一区在线观看| 色婷婷香蕉在线一区二区| av亚洲产国偷v产偷v自拍| 国产成人精品aa毛片| 国产精品66部| 国产乱码精品一区二区三区忘忧草 | 国产婷婷色一区二区三区| 精品国产一区二区在线观看| 日韩美女一区二区三区四区| 欧美一级高清大全免费观看| 日韩三级在线观看| 日韩欧美一级片| 精品91自产拍在线观看一区| 久久一日本道色综合| 精品国产乱码久久久久久久| 精品sm在线观看| 国产亚洲一本大道中文在线| 亚洲国产精品激情在线观看| 国产精品嫩草影院av蜜臀| 国产精品日韩精品欧美在线| 亚洲欧洲色图综合| 夜夜爽夜夜爽精品视频| 亚洲成人一区在线| 欧美aaaaaa午夜精品| 精品在线一区二区| 国产98色在线|日韩| 91玉足脚交白嫩脚丫在线播放| 色又黄又爽网站www久久| 欧美三级日韩在线| 日韩视频在线永久播放| 日本一区二区久久| 一区二区视频免费在线观看| 丝袜美腿亚洲一区| 国产精品亚洲视频| 91丨porny丨首页| 欧美欧美午夜aⅴ在线观看| 欧美videos大乳护士334| 国产亚洲一区二区三区| 亚洲美女一区二区三区| 五月婷婷欧美视频| 韩国女主播成人在线观看| 成人免费看片app下载| 欧美日韩国产小视频在线观看| 日韩一级黄色大片| 国产精品青草综合久久久久99| 亚洲精品菠萝久久久久久久| 另类欧美日韩国产在线| 99视频精品全部免费在线| 久久综合网色—综合色88| 国产精品卡一卡二卡三| 五月天激情综合网| 国产精品一二三| 欧美亚洲综合一区| 26uuu国产电影一区二区| 亚洲精品成人精品456| 国产在线精品一区二区夜色| 91视频国产资源| 日韩女优视频免费观看| 亚洲精品免费电影| 老司机精品视频在线| 一本色道亚洲精品aⅴ| 精品国产乱码久久久久久图片| 一区二区三区波多野结衣在线观看| 精品亚洲aⅴ乱码一区二区三区| 色综合天天综合网天天看片| 2023国产精品视频| 亚洲伊人伊色伊影伊综合网| 夫妻av一区二区| 欧美精品久久久久久久久老牛影院| 国产精品久久三区| 看片网站欧美日韩| 欧美偷拍一区二区| 国产精品久久久久影院老司| 久久精品国产**网站演员| 一本久道久久综合中文字幕| 国产人久久人人人人爽| 免费在线观看日韩欧美| 欧洲国内综合视频| 成人欧美一区二区三区视频网页| 精品在线免费观看| 4438x成人网最大色成网站| 中文字幕欧美激情| 国内精品久久久久影院色| 在线91免费看| 亚洲一区二区三区国产| 91丨porny丨中文| 国产精品视频看| 福利一区福利二区| 久久久久国产精品麻豆ai换脸| 日本欧美一区二区在线观看| 欧美亚洲国产一区在线观看网站| 亚洲人成网站精品片在线观看| 国产91精品一区二区麻豆亚洲| 精品国产三级电影在线观看| 99久久精品国产麻豆演员表| 欧美国产成人精品| 国产夫妻精品视频| 久久亚洲一级片| 黑人精品欧美一区二区蜜桃| 欧美一级高清大全免费观看| 美女脱光内衣内裤视频久久影院| 欧美一区在线视频| 欧美aaa在线| 精品国产免费一区二区三区四区| 美日韩黄色大片| 精品女同一区二区| 精品一区二区免费| 久久欧美一区二区| 国产伦理精品不卡| 国产日产精品1区| 国产91在线观看| 欧美国产乱子伦| 99久久精品国产麻豆演员表| 伊人开心综合网| 欧美日韩一区三区| 图片区日韩欧美亚洲| 91精品福利在线一区二区三区| 久久91精品久久久久久秒播| 久久综合久久鬼色| 成人福利视频网站| 自拍偷拍欧美激情| 91福利精品第一导航| 亚洲一区二区五区| 91精品国产综合久久福利| 久久成人免费日本黄色| 久久久久久久电影| 成人高清免费观看| 亚洲图片欧美一区| 日韩三区在线观看| 成人18视频在线播放| 亚洲综合成人在线视频| 4hu四虎永久在线影院成人| 九一九一国产精品| 亚洲欧洲性图库| 欧美日韩久久久久久| 久久丁香综合五月国产三级网站| 久久久www成人免费毛片麻豆| av成人免费在线| 午夜国产精品影院在线观看| 久久久99精品免费观看| 91免费国产在线| 蜜桃在线一区二区三区| 中文字幕乱码亚洲精品一区| 欧美午夜精品久久久久久超碰| 美女www一区二区| 亚洲欧洲www| 欧美一二三在线| www.日本不卡| 秋霞影院一区二区| 中文字幕欧美一| 日韩午夜激情av| 色综合久久久久综合体| 另类专区欧美蜜桃臀第一页| 亚洲免费观看高清完整版在线观看熊| 欧美一区二区三区精品| 不卡一区二区三区四区| 石原莉奈一区二区三区在线观看| 中文字幕精品—区二区四季| 91精品一区二区三区在线观看| jlzzjlzz欧美大全| 另类的小说在线视频另类成人小视频在线| 亚洲色图欧洲色图| 欧美精品一区二区三区蜜桃| 欧美丝袜自拍制服另类| 成人sese在线|