Coolfensi网络头像

Coolfensi网络

客服VX:coolfensi,客服QQ:2451468936(QQ/微信客服只做引导和站点通知,不闲聊。有站点内业务疑问以及订单问题的话,请点击【CL-在线售后客服窗口】进行会话)

  • 文章79897
  • 阅读5669213

人生倒计时

  • 今日已经过去小时
  • 这周已经过去
  • 本月已经过去
  • 今年已经过去个月
首页 最新知识 正文内容

天气小程序源码(天气预报小程序)

客服VX(coolfensi) 最新知识 2022-10-24 14:10:35 61

winform本人小白 这两天需要一个能获取天气的小程序,难求啊 ???各种求人 问度娘

这个简单:

联系方式:微信:coolfensi
(使用浏览器扫码进入在线客服窗口)
复制联系方式

网上有免费的天气接口:WebService

写个程序,调用WebService ,给你返回一个数组,数组里面就是你需要的结果。

你看看这个例子,就知道怎么做了,很简单的

天气小程序源码(天气预报小程序) 第1张

带有天气预报的微信小程序怎么制作

小程序的源码里写上天气预报的小程序源码就没有问题的。

上传后通过审核就会在微信内部进行展示的。

求Android天气预报的开发源代码

package com.nrzc.weatherstation;

import android.content.Context;

import android.hardware.Sensor;

import android.hardware.SensorEvent;

import android.hardware.SensorEventListener;

import android.hardware.SensorManager;

import android.os.Bundle;

import android.support.v7.app.AppCompatActivity;

import android.widget.TextView;

import java.util.Timer;

import java.util.TimerTask;

/**

* 环境传感器

* 气象站

*/

public class MainActivity extends AppCompatActivity {

private SensorManager sensorManager;

private TextView temperatureTextView;

private TextView pressureTextView;

private TextView lightTextView;

private float currentTemperature=Float.NaN;

private float currentPressure=Float.NaN;

private float currentLight=Float.NaN;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

init();

Timer updateTimer=new Timer("weatherUpdate");

updateTimer.scheduleAtFixedRate(new TimerTask() {

@Override

public void run() {

updateGUI();

}

},0,1000);

}

private void init(){

temperatureTextView=(TextView)findViewById(R.id.temperature);

pressureTextView=(TextView)findViewById(R.id.pressure);

lightTextView=(TextView)findViewById(R.id.light);

sensorManager=(SensorManager)getSystemService(Context.SENSOR_SERVICE);

}

private final SensorEventListener tempSensorEventListener=new SensorEventListener() {

@Override

public void onSensorChanged(SensorEvent event) {

currentTemperature=event.values[0];

}

@Override

public void onAccuracyChanged(Sensor sensor, int accuracy) {

}

};

private final SensorEventListener pressureSensorEventListener=new SensorEventListener() {

@Override

public void onSensorChanged(SensorEvent event) {

currentPressure=event.values[0];

}

@Override

public void onAccuracyChanged(Sensor sensor, int accuracy) {

}

};

private final SensorEventListener lightSensorEventListener=new SensorEventListener() {

@Override

public void onSensorChanged(SensorEvent event) {

currentLight=event.values[0];

}

@Override

public void onAccuracyChanged(Sensor sensor, int accuracy) {

}

};

@Override

protected void onResume() {

super.onResume();

Sensor lightSensor=sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);

if (lightSensor!=null)

sensorManager.registerListener(lightSensorEventListener,

lightSensor,

SensorManager.SENSOR_DELAY_NORMAL);

else

lightTextView.setText("Light Sensor Unavailable");

Sensor pressureSensor=sensorManager.getDefaultSensor(Sensor.TYPE_PRESSURE);

if (pressureSensor!=null)

sensorManager.registerListener(pressureSensorEventListener,

pressureSensor,SensorManager.SENSOR_DELAY_NORMAL);

else

pressureTextView.setText("Barometer Unavailable");

Sensor temperatureSensor=sensorManager.getDefaultSensor(Sensor.TYPE_AMBIENT_TEMPERATURE);

if (temperatureSensor!=null)

sensorManager.registerListener(tempSensorEventListener,

temperatureSensor,

SensorManager.SENSOR_DELAY_NORMAL);

else

temperatureTextView.setText("Thermometer Unavailable");

}

@Override

protected void onPause() {

sensorManager.unregisterListener(pressureSensorEventListener);

sensorManager.unregisterListener(tempSensorEventListener);

sensorManager.unregisterListener(lightSensorEventListener);

super.onPause();

}

private void updateGUI(){

runOnUiThread(new Runnable() {

@Override

public void run() {

if(!Float.isNaN(currentPressure)){

pressureTextView.setText(currentPressure+"hPa");

pressureTextView.invalidate();

}

if (!Float.isNaN(currentLight)){

String lightStr="Sunny";

if (currentLight=SensorManager.LIGHT_CLOUDY)

lightStr="night";

else if (currentLight=SensorManager.LIGHT_OVERCAST)

lightStr="Cloudy";

else if (currentLight=SensorManager.LIGHT_SUNLIGHT)

lightStr="Overcast";

lightTextView.setText(lightStr);

lightTextView.invalidate();

}

if (!Float.isNaN(currentTemperature)){

temperatureTextView.setText(currentTemperature+"C");

temperatureTextView.invalidate();

}

}

});

}

}

开发中怎样在小程序中添加天气组件

首先分析制作的思路:

1.在app.json文件的pages数组里加上main文件夹和template(模板)文件夹的路径。

2.在main.js文件中,在onLoad()函数中调用loadInfo()函数。

3. 自定义获取位置的函数loadInfo(),调用wx.getLocation,用于获取当前的纬度(latitude)和经度(longitude)。在loadInfo()函数中接着调用loadCity()函数。

4. 自定义获取城市的函数loadCity(),调用wx.request,在“百度地图开放平台”网站中注册自己的AK,通过获取城市信息的网址(自己的aklocation=纬度值,经度值output=json)实现当前城市名称的获取。

在loadCity()函数中接着调用loadWeather()函数。

5.自定义获取天气的函数loadWeather(),根据已有的城市名称,通过获取天气信息的网址(城市名)实现天气信息的数据获取。

6.在main.wxml文件中,未来天气部分通过import调用了自定义模板文件itemtpl.wxml。

然后分析项目中文件的源码。

app.json文件的代码如下:

{

"pages":[

"pages/main/main",

"pages/template/itemtpl",

"pages/index/index",

"pages/logs/logs"

],

"window":{

"backgroundTextStyle":"light",

"navigationBarBackgroundColor": "#fff",

"navigationBarTitleText": "天气",

"navigationBarTextStyle":"black"

}

}

main.wxml的代码如下:

view class='cont'

!-- 今日天气--

view class='today'

view class='info'

view class='tempe'{{today.wendu}}°C/view

view class='weather'{{today.todayInfo.type}}{{today.todayInfo.fengxiang}}/view

view温馨提示:{{today.ganmao}}/view

view class='city'{{city}}/view

/view

/view

!-- 未来天气--

import src="../template/itemtpl"/

view class='future'

block wx:for="{{future}}"

template is="future-item" data="{{item}}"/

/block

/view

/view

main.wxss文件的代码如下:

/**/

.cont{

font-size:30rpx;

width:100%;

height:100%;

}

.today{

padding:50rpx 0 0 0;

height:50%;

}

.info{

padding:20rpx;

background:rgba(0,0,0,.8);

line-height: 1.5em;

color:#eee;

}

.tempe{

font-size:90rpx;

text-align: center;

margin:30rpx 0;

}

.weather{

text-align: center;

}

.city{

font-size:40rpx;

color:#f60;

text-align: right;

margin: 30rpx 10rpx 0 0;

}

.future{

display:flex;

flex-direction: row;

height:100%;

padding:20rpx 0 20rpx 10rpx;

background:rgba(0,0,0,.8);

text-align: center;

margin:50rpx 0 70rpx 0;

color:#eee;

}

.future-item{

min-height: 100%;

width:160rpx;

margin: 0 10rpx;

border:solid 1px #f90;

padding:10rpx 0 0 0;

line-height:2em;

}

main.js文件的代码如下:

//

Page({

data: {

// weatherData:''

city:"" ,

today:{},

future:{},

},

onLoad: function () {

this. loadInfo();

},

//自定义获取位置

loadInfo:function(){

var page=this;

wx.getLocation({

type: 'gcj02', //返回可以用于wx.openLocation的经纬度

success: function (res) {

var latitude = res.latitude

var longitude = res.longitude

console.log(latitude, longitude);

page.loadCity(latitude, longitude);

}

})

} ,

//自定义获取城市

loadCity: function (latitude, longitude){

var page = this;

wx.request({

url: '自己的AK location=' + latitude + ',' + longitude + 'output=json',

header: {

'content-type': 'application/json'

},

success: function (res) {

console.log(res);

var city=res.data.result.addressComponent.city;

city=city.replace("市","");

page.setData({

city:city

});

page.loadWeather(city);

}

})

},

//自定义获取天气

loadWeather: function (city) {

var page = this;

wx.request({

url: '' + city,

header: {

'content-type': 'application/json'

},

success: function (res) {

console.log(res);

var future=res.data.data.forecast;

var todayInfo=future.shift();

var today=res.data.data;

today.todayInfo=todayInfo;

page.setData({

today:today,

future:future,

});

}

})

}

})

itemtpl.wxml的代码如下:

!-- 模板文件--

template name="future-item"

view class="future-item"

view{{item.date}}/view

view{{item.type}}/view

view{{item.fengxiang}}/view

view{{item.low}}/view

view{{item.high}}/view

/view

/template

至此,案例制作完成。

文章目录
    搜索