// 받아온 위도 경도 좌표를 지도상에 보여주는 함수 private void showMyLocation(double latitude, double longitude) { NMapViewerResourceProvider mMapViewerResourceProvider = null; NMapOverlayManager mOverlayManager; mMapViewerResourceProvider = new NMapViewerResourceProvider(this); mOverlayManager = new NMapOverlayManager(this, mapview, mMapViewerResourceProvider); NGeoPoint myPoint = new NGeoPoint(longitude, latitude); // 위치 좌표에 오버레이 아이템을 표시하여 지도상에 보여주는 부분 // 오버레이 아이템 상에 있는 이미지 PIN을 이용하는 부분 int markerId = NMapPOIflagType.PIN; NMapPOIdata poiData = new NMapPOIdata(1, mMapViewerResourceProvider); poiData.beginPOIdata(1); // 좌표 정보와 오버레이 아이템 정보, 텍스트 정보를 설정한다. poiData.addPOIitem(myPoint, "현재 위치", markerId, 0); poiData.endPOIdata(); NMapPOIdataOverlay poiDataOverlay = mOverlayManager.createPOIdataOverlay(poiData, null); poiDataOverlay.showAllPOIdata(0); // 지도 상에 위치 좌표와 오버레이 아이템 모두를 보여준다. (최종적으로 지도상에 표시하고 보여주는 부분) NMapController controller = mapview.getMapController(); controller.animateTo(myPoint); }
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 지도 객체 생성과 API_KEY 설정 mapview = new NMapView(this); mapview.setApiKey(API_KEY); // 지도를 보여주기 위한 부분을 찾고 지도 상에 Zoom 버튼을 생성한다. mapview = (NMapView) findViewById(R.id.mapview); mapview.setBuiltInZoomControls(true, null); // GPS 장치를 이용하기 위해 LocationManager를 사용한다. // requestLocationUpdates의 파라메타 값으로 GPS or Network 장치를 설정하고 위치 갱신 시간과 갱신 받기위한 거리, Listener를 // 설정한다. LocationManager manager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); manager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 10000, 0, (LocationListener) this); }
private void adjustTextBounds(NMapView mapView) { // Determine the screen coordinates of the selected MapLocation mapView.getMapProjection().toPixels(mOverlayItem.getPointInUtmk(), mTempPoint); final String title = mOverlayItem.getTitle(); mTextPaint.getTextBounds(title, 0, title.length(), mTempRect); // Setup the callout with the appropriate size & location mTempRectF.set(mTempRect); mTempRectF.inset(-CALLOUT_TEXT_PADDING_X, -CALLOUT_TEXT_PADDING_Y); mOffsetX = mTempPoint.x - mTempRect.width() / 2; mOffsetY = mTempPoint.y - mTempRect.height() - mItemBounds.height() - CALLOUT_TEXT_PADDING_Y; mTempRectF.offset(mOffsetX, mOffsetY); }
private void adjustTextBounds(NMapView mapView) { // First determine the screen coordinates of the selected MapLocation mapView.getMapProjection().toPixels(mOverlayItem.getPointInUtmk(), mTempPoint); int mapViewWidth = mapView.getMapController().getViewFrameVisibleWidth(); if (mTitleTruncated == null || mWidthTitleTruncated != mapViewWidth) { mWidthTitleTruncated = mapViewWidth; float maxWidth = mWidthTitleTruncated - 2 * mMarginX - 2 * mPaddingX; if (DEBUG) { Log.i( LOG_TAG, "adjustTextBounds: maxWidth=" + maxWidth + ", mMarginX=" + mMarginX + ", mPaddingX=" + mPaddingX); } if (mDrawableRightButton != null) { maxWidth -= mPaddingX + mCalloutRightButtonWidth; } if (mTailText != null) { mTextPaint.getTextBounds(mTailText, 0, mTailText.length(), mTempRect); mTailTextWidth = mTempRect.width(); maxWidth -= mTailGapX + mTailTextWidth; } final String title = TextUtils.ellipsize( mOverlayItem.getTitle(), mTextPaint, maxWidth, TextUtils.TruncateAt.END) .toString(); mTitleTruncated = title; if (DEBUG) { Log.i( LOG_TAG, "adjustTextBounds: mTitleTruncated=" + mTitleTruncated + ", length=" + mTitleTruncated.length()); } } mTextPaint.getTextBounds(mTitleTruncated, 0, mTitleTruncated.length(), mTempRect); if (mDrawableRightButton != null) { mTempRect.right += mPaddingX + mCalloutRightButtonWidth; } if (mTailText != null) { mTempRect.right += mTailGapX + mTailTextWidth; } if (DEBUG) { Log.i( LOG_TAG, "adjustTextBounds: mTempRect.width=" + mTempRect.width() + ", mTempRect.height=" + mTempRect.height()); } // Setup the callout with the right size & location mTempRectF.set(mTempRect); final float dy = (mBackgroundHeight - mTempRect.height()) / 2; mTempRectF.inset(-mPaddingX, -dy); // mTempRectF.inset(-mPaddingX, -mPaddingY); // set minimum size if (mTempRectF.width() < mMinimumWidth) { final float dx = (mMinimumWidth - mTempRectF.width()) / 2; mTempRectF.inset(-dx, 0); } // set position float left = mTempPoint.x - (int) (mTempRectF.width() * mOverlayItem.getAnchorXRatio()); float top = mTempPoint.y - (int) (mItemBounds.height() * mOverlayItem.getAnchorYRatio()) - mItemGapY - mTotalHeight; mTempRectF.set(left, top, left + mTempRectF.width(), top + mTempRectF.height()); }