StratoSphere Stream

구글 어시스턴트에는 빌트 인텐트(Built-in intents) 라는것이 있다.

다음 링크에서 확인 가능하다



=> https://developers.google.com/actions/reference/built-in-intents/


사용자가 특정한 것을 의도하면 리스트를 뿌려주는 거 같다. 단편적으로 '게임해줘' 라고 말하면 대충 뜨는 리스트가 있는데

그게 actions.intent.PLAY_GAME 를 적용한 앱들이다.(아닌 것도 있는데 자동적으로 찾아주는거 같다.)


적용 방법은 아래처럼 이벤트에 넣어주면 된다. 자동으로 뜬다.

Dialogflow에서는 이벤트 부분에서 찾으면 된다.

각 빌트가 어떤 의미인지는 위의 링크에 있고.




Comment : 0

if로 체크하는 방법 보다는 더 진보적인 거 같아서(GCP에서 에러도 안나고) 메모할겸 적는다.


1
2
3
4
5
6
7
8
9
10
11
12
13
let checkStus = {
  'numbers'0,
  'value'0
};
 
if (checkStus.hasOwnProperty('number')) {
  //있다면
  console.log(true)
 
else {
  //없다면
  console.log(false)
}
cs


Comment : 0

사람들은 하나씩 빼먹고 설명을 하는데(나도 그렇지만) 이건 꼭 써야 할거같아서 쓴다.


accountRepository.save(Account.builder() 이런식으로 쓸 경우 builder()가 안뜨는 경우가 있다.


 - 해결방법


    compileOnly('org.projectlombok:lombok')


당연하지만 lombok은 추가해야 한다.


우선 lombok이 있는 위치로 간다

나의 경우는


C:\Users\ACID\.gradle\caches\modules-2\files-2.1\org.projectlombok\lombok\1.16.22\e555426550f54284fefb09065f2123a1d9be0b73


였다. lombok-1.16.22.jar 이라는 파일이 있을것이다. 버전은 다르지만 대략 저런 파일이다.


이제 CMD를 관리자권한으로 실행[각주:1]해서


C:\Users\ACID\.gradle\caches\modules-2\files-2.1\org.projectlombok\lombok\1.16.22\e555426550f54284fefb09065f2123a1d9be0b73


위치로 간다 명령어는



cd C:\Users\ACID\.gradle\caches\modules-2\files-2.1\org.projectlombok\lombok\1.16.22\e555426550f54284fefb09065f2123a1d9be0b73


이런식이다. cd + 탐색기에서 복사한 위치로 가면 된다.


그리고나서



 java -jar lombok-1.16.22.jar


이렇게 실행을 한다. 실행하면



이런 화면이 뜨는데 자동으로 추가되지만 안될경우는

Specify location을 눌러서



STS.exe파일을 찾아서 실행하면 된다.


제대로 되면 Successful 글자가 어딘가 나올거고 STS.ini파일에 적당히 추가된 것이 보인다.


-vmargs
-javaagent:C:\Program Files\STS\sts-Springboot\sts-3.9.6.RELEASE\lombok.jar


대충 이런거


이렇게 해서 Builder()가 정상적으로 작동을 할 것이다.


  1. 가끔 나같이 program 폴더에 넣으면 수정시 관리자 권한이 필요하다. [본문으로]

Comment : 0


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
  Date date = new Date();
    long dateLongTime = date.getTime();
    //Date함수를 사용한 long time 구하기
    System.out.println(dateLongTime);
 
    //System을 사용한 long time 구하기
    long dateLongTime2 = System.currentTimeMillis();
    System.out.println(dateLongTime2);
 
    //Calander함수를 이용한
    Calendar cal = Calendar.getInstance();
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd",Locale.KOREA);
    // 날자를 set 하는 방법 (달은 0에서 시작한다)
    cal.set(2000,0,1);
    //SimpleDateFormat을 사용한 날짜 String
    System.out.println("현재날자 : " +sdf.format(cal.getTime()));
 
    //년월일 구하는 방법
    System.out.println("년 : " +cal.get(Calendar.YEAR));
    System.out.println("월 : " +cal.get(Calendar.MONTH));
    System.out.println("일 : " +cal.get(Calendar.DATE));
    System.out.println("요일여부 : " +cal.get(Calendar.DAY_OF_WEEK)); //1: 일요일 , 2: 월요일.. 7: 토요일
    System.out.println("WEEK_OF_YEAR : " +cal.get(Calendar.WEEK_OF_YEAR));// 몇째주 주인가?
    //2000년의 2월의 마지막 날은? => 29일
    System.out.println ("월의 마지막 일자 : " + cal.getActualMaximum ( Calendar.DATE ) );
 
    //1년에 전체 요일과 일요일과 토요일이 그리고 토요일과일요일을은 몇개?
    int allDay = 0;
    int allDayHoliday = 0;
    int allDaySun = 0;
    int allDaySat = 0;
 
    for(int i = 0; i< 12 ; i++){
      cal.set(2000,i,1); //초기 날짜 받음
      int x = cal.getActualMaximum ( Calendar.DATE ); //달의 마지막 날자를 다름 for에서 length로 수정
 
      for(int j = 1; j<= x ; j++){
        cal.set(2000,i,j); //day를 수정해줌
 
        int temp = cal.get(Calendar.DAY_OF_WEEK);
        System.out.println("temp: " + temp);
        if(temp == 1 ){
          allDayHoliday++;
          allDaySun++;
        }
        if(temp == 7 ){
          allDayHoliday++;
          allDaySat++;
        }
        allDay++;
      }
 
    }
    System.out.println("전체: " + allDay); //2000년은 윤년이 있어서 366일이다.
    System.out.println("전체토일: " + allDayHoliday); // 106
    System.out.println("일요일: " + allDaySun); //53
    System.out.println("토요일: " + allDaySat); // 53
cs


'프로그래밍 > JAVA' 카테고리의 다른 글

[자바] Date 함수와 Calender 함수  (0) 2018.10.15

Comment : 0

1. 메니페스토에 인터넷


2. 


package location.techdown.com.simplevideoplayer;

import android.media.AudioManager;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.MediaController;
import android.widget.SeekBar;
import android.widget.TextView;
import android.widget.VideoView;

import java.net.URL;

public class MainActivity extends AppCompatActivity {
Button play;
Button stop;
VideoView videoView;
SeekBar seekBar;
AudioManager maudioManager = null;
TextView textView;

String url = "http://techslides.com/demos/sample-videos/small.mp4";

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

play = findViewById(R.id.play);
stop = findViewById(R.id.stop);
videoView = findViewById(R.id.videoView);
seekBar = findViewById(R.id.seekBar);
textView = findViewById(R.id.textView);

//음량값 받기
maudioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
int maxVol = maudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
//최대치 값을 가져와서 seekBar Max로 하기
seekBar.setMax(maxVol);
textView.setText("음량최대값: "+ maxVol);


//Seekbar로 음량 변경
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int i, boolean b) {
textView.setText("변환값 "+ i);
//음악 음량 변경
maudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, i, AudioManager.FLAG_SHOW_UI);
}

@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}

@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});

MediaController mediaController = new MediaController(this);
videoView.setMediaController(mediaController);
//주소변경
videoView.setVideoURI(Uri.parse(url));
videoView.requestFocus();

play.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//플레이
videoView.start();
}
});

stop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//멈춤
videoView.stopPlayback();
}
});

}
}


응용판으로 Seekbar을 이용해서 음량을 조절할 수 있게 했다.

Comment : 0

1. 메니페스트에 인터넷 권한 승인하기


2. 

package location.techdown.com.sampleaudioplayer;

import android.media.MediaPlayer;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

import java.io.IOException;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

Button play;
Button stop;
Button replay;
TextView textView;

static final String bgm = "http://mini-files.thinkpool.com/files/mini/2004/09/14/%EC%BD%94%EC%9A%94%ED%83%9C-%EB%B6%88%EA%BD%83.mp3";
private MediaPlayer mediaPlayer;
private int playbackPosition = 0;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

play = findViewById(R.id.button);
stop = findViewById(R.id.button2);
replay = findViewById(R.id.button3);
textView = findViewById(R.id.textView);

play.setOnClickListener(this);
stop.setOnClickListener(this);
replay.setOnClickListener(this);


}

@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.button: //play
playAudio(bgm);
Toast.makeText(getApplicationContext(), "재생", Toast.LENGTH_LONG).show();
break;
case R.id.button2: //stop
if (mediaPlayer != null) {
//현재 위치 받기
playbackPosition = mediaPlayer.getCurrentPosition();
mediaPlayer.pause(); //멈춤
Toast.makeText(getApplicationContext(), "일시중지", Toast.LENGTH_LONG).show();
textView.setText("현재위치 : "+playbackPosition);
}
break;
case R.id.button3: //replay
//재생이 있고 재생중이 맞다면 실행
if (mediaPlayer != null && mediaPlayer.isPlaying() == false) {
//재시작을 하면 시작후 seekTo로 중단되었던 포지션으로 이동
mediaPlayer.start(); //시작
mediaPlayer.seekTo(playbackPosition); // 타임 위치로 가기

}
break;

}
}

@Override
protected void onDestroy() {
super.onDestroy();
killAudio();
}

public void playAudio(String url) {
killAudio();
mediaPlayer = new MediaPlayer();
try {
mediaPlayer.setDataSource(url); // 주소 받기
mediaPlayer.prepare(); // 준비
mediaPlayer.start(); //시작
} catch (IOException e) {
e.printStackTrace();
}

}

private void killAudio() {
if (mediaPlayer != null) {
//리소스 해제
mediaPlayer.release();
}
}
}


Comment : 0


컨트롤 알트 S를 눌러서 설정으로 간 다음

Google play Service를 활성화.



컨트롤 알트 쉬프트 에스를 눌러서

프로젝트 구조에서 app -> Dependencies -> +

play-service 로 검색하면 maps달린거 추가. 


메니페스트


<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.acid.samplelocation">

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET"/>

<permission
android:name="com.example.acid.samplelocation.permission.MAPS.RECEIVE"
android:protectionLevel="signature" />

<uses-permission android:name="com.example.acid.samplelocation.permission.MAPS_RECEIVE" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICE" />

<uses-feature
android:glEsVersion="0x00020000"
android:required="true" />


<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">

<uses-library android:name="com.google.android.maps"/>
<meta-data android:name="com.google.android.maps.v2.API_KEY"
android:value="API키를 넣으면 된다."/>

<meta-data android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version"/>

<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

</manifest>

구글 Api key는 구글에서 구하면 된다.


layout


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">

<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="GPS location"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />

<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="GPS ON"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView1" />

<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="GPS OFF"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/button" />

<Button
android:id="@+id/buttonMap"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="버튼" />
</LinearLayout>

<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">

<fragment
android:id="@+id/map"
class="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>

</LinearLayout>


package com.example.acid.samplelocation;

import android.content.Context;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

import com.google.android.gms.maps.CameraUpdate;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapsInitializer;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.Marker;
import com.google.android.gms.maps.model.MarkerOptions;

public class MainActivity extends AppCompatActivity {

TextView textView;
Button button;
Button button2;
Button buttonMap;

SupportMapFragment mapFragment;
GoogleMap map;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = findViewById(R.id.textView1);
button = findViewById(R.id.button);
button2 = findViewById(R.id.button2);

//버튼 맵
buttonMap = findViewById(R.id.buttonMap);

//지도 객체 참조
mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
mapFragment.getMapAsync(new OnMapReadyCallback() {
@Override
public void onMapReady(GoogleMap googleMap) {
map = googleMap;

//최초 표시 부분
//없으면 지도가 회색으로 나온다.
// 서울역으로
googleMap.moveCamera(CameraUpdateFactory.newLatLng(new LatLng(37.555744, 126.970431)));
//지도 Zoom 정도
googleMap.animateCamera(CameraUpdateFactory.zoomTo(15));

}
});

//지도 인식
MapsInitializer.initialize(this);

buttonMap.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
requestMylocation();
}
});

button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
requestMylocation();
}
});
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
stopLocation();
Toast.makeText(getApplicationContext(), "GPS OFF", Toast.LENGTH_LONG).show();
}
});
}



//class가 아닌 pricate 값으로 하나 만든다. remove를 위해서
private LocationListener locationListener = new LocationListener() {
@Override
public void onLocationChanged(Location location) {
Double latitude = location.getLatitude();
Double longitude = location.getLongitude();
showCurrentLocation(latitude, longitude);
}

public void showCurrentLocation(Double getLatitude, Double getLongitude) {
LatLng latLng = new LatLng(getLatitude, getLongitude);
map.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng, 17));

//마커로 좌표 찍기
MarkerOptions marker = new MarkerOptions();
//마커에 넣을 정보
//snippet은 subtitle같은 것이다
marker.position(latLng).title("My position").snippet("my position");
//마커를 지도에 표기
map.addMarker(marker).showInfoWindow();

//마커를 누르면 실행되는 것
map.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker marker) {
Toast.makeText(getApplicationContext(), "클릭했음", Toast.LENGTH_LONG).show();
return false;
}
});


}

@Override
public void onStatusChanged(String s, int i, Bundle bundle) {

}

@Override
public void onProviderEnabled(String s) {

}

@Override
public void onProviderDisabled(String s) {

}
};

LocationManager locationManager = null;

//내 위치 요청
public void requestMylocation() {
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); //LOCATION_SERVICE
Location location = null;
if (locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) { //네트워크가 활성화 되어 있다면
location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
} else {
location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); //마지막에 알려진 위치
}

String getLongitude = "LAST getLongitude : " + location.getLongitude();
String getLatitude = " LAST getLatitude : " + location.getLatitude();
Log.i("Location ", getLongitude + "" + getLatitude);

Double longitude = location.getLongitude();
Double latitude = location.getLatitude();
textView.setText("latitude " + latitude);

Toast.makeText(getApplicationContext(), "GPS", Toast.LENGTH_LONG).show();

long minTime = 10000; // 10초
long minDistance = 0;
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, minTime, minDistance, locationListener);


}


//GPS중단
public void stopLocation() {
locationManager.removeUpdates(locationListener);
}


}

주석으로 설명은 달아놓았는데, GPS받는 부분에서 구글 맵 부분이 추가된 형태이다. 



Comment : 0

package com.example.acid.samplelocation;

import android.content.Context;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

TextView textView;
Button button;
Button button2;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = findViewById(R.id.textView1);
button = findViewById(R.id.button);
button2 = findViewById(R.id.button2);


button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startLocationService();
}
});
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
stopLocation();
Toast.makeText(getApplicationContext(), "GPS OFF", Toast.LENGTH_LONG).show();
}
});
}

private LocationListener locationListener = new LocationListener(){
@Override
public void onLocationChanged(Location location) {
Double latitude = location.getLatitude();
Double longitude = location.getLongitude();
textView.setText(latitude + " "+longitude);
Toast.makeText(getApplicationContext(), "onLocationChanged", Toast.LENGTH_LONG).show();

}

@Override
public void onStatusChanged(String s, int i, Bundle bundle) {

}

@Override
public void onProviderEnabled(String s) {

}

@Override
public void onProviderDisabled(String s) {

}
};

LocationManager locationManager = null;

public void startLocationService() {
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); //LOCATION_SERVICE
Location location = null;
if(locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)){ //네트워크가 활성화 되어 있다면
location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
}else{
location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); //마지막에 알려진 위치
}

String getLongitude = "LAST getLongitude : " + location.getLongitude();
String getLatitude = " LAST getLatitude : " + location.getLatitude();
Log.i("Location ", getLongitude + "" + getLatitude);

textView.setText(getLongitude + "" + getLatitude);
Toast.makeText(getApplicationContext(), "GPS", Toast.LENGTH_LONG).show();


long minTime = 10000; // 10초
long minDistance = 0;
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, minTime, minDistance, locationListener);
}

public void stopLocation(){
locationManager.removeUpdates(locationListener);
}


}

GPS 받고 끊고 


<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>

메니페스트에 이거 넣어야 한다. 

Comment : 0

자바스크립트에서 글자를 숫자를 변환해야 할때


1
2
3
4
5
6
7
8
 
1. String을 Int로 변환
parseInt(text) //소수점이었던 String인 경우는 소수점 이하 버림 
1. String을 소수점으로 변환
parseFloat(text)
1. String을 숫자로 변환
Number(text) //보통은 이걸 쓰면 됨
 
cs


Comment : 0

지도 관련해서 사용해야 할 일이 있었다.

GPS상의 좌표(WGS84)를 받아서 TM128(카텍)로 변환하는 방식이다. 오피넷에서 쓰는 좌표로 변환. 


proj4로 TM128에 대한 보정값을 만들어서 변환을 할 수 있다.

주석의 블로그 주소는 각 보정값을 표기한 사이트.


defs로 값을 보정 값을 정의하고, 왼쪽에 정의된 값을 쓰면 작동을 한다. 


result는 Array이므로 result[0] result[1]이렇게 사용하면 된다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
//https://rlarltjs776.wordpress.com/2016/02/24/%ED%95%9C%EA%B5%AD-%EC%A3%BC%EC%9A%94-%EC%A2%8C%ED%91%9C%EA%B3%84-epsg%EC%BD%94%EB%93%9C-%EB%B0%8F-proj4-%EC%9D%B8%EC%9E%90-%EC%A0%95%EB%A6%AC/
 
const proj4 = require('proj4');
 
var from = 'WGS84'
var to = 'TM128'
 
proj4.defs('WGS84'"+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs");
proj4.defs('TM128''+proj=tmerc +lat_0=38 +lon_0=128 +k=0.9999 +x_0=400000 +y_0=600000 +ellps=bessel +units=m +no_defs +towgs84=-115.80,474.99,674.11,1.16,-2.31,-1.63,6.43');
 
var xy = [127.1415247,37.5283983];
var result = proj4(from, to, xy);
 
console.log(result) // result: [ 324317.673778079, 547700.4604186672 ]
cs




Comment : 0